【发布时间】:2017-08-30 10:37:11
【问题描述】:
所以我有一个表单,它是一个比例 A4 页面,允许用户在表单上拖放控件进行打印。
IE 控件在窗体上的任何位置都用于将控件数据(例如:文件名或图像)打印到 A4 页面的那个点。
但是,我已经为表单创建了许多模板,这些模板在某些位置设置控件并添加任何缺少的控件。选择模板后,即使我调用了Invalidate() 方法,表单上也不会显示任何额外的控件。
这是我将控件添加到表单的方法的代码:
private void standardIDToolStripMenuItem_Click(object sender, EventArgs e)
{
selectedID = true;
selectedInvoice = false;
selectedLetter = false;
lblName.Visible = true;
lblDOB.Visible = true;
lblUID.Visible = true;
lblName.Location = new Point(200, 100);
lblDOB.Location = new Point(200, 125);
lblUID.Location = new Point(200, 150);
lblName2.Text = lblName.Text;
lblName2.Location = new Point(60, 750);
lblName2.Enabled = true;
lblName2.Visible = true;
lblDOB2.Text = lblDOB.Text;
lblDOB2.Location = new Point(60, 775);
lblDOB2.Enabled = true;
lblDOB2.Visible = true;
lblUID2.Text = lblUID.Text;
lblUID2.Location = new Point(60,800);
lblUID2.Enabled = true;
lblUID2.Visible = true;
hidden1.Location = new Point(300, 100);
DOBHidden.Location = new Point(300, 125);
UIDHidden.Location = new Point(300, 150);
#region ID Background placeholder
PictureBox backPic = new PictureBox();
backPic.Location = new Point(24, 48);
backPic.ForeColor = System.Drawing.Color.PaleGreen;
backPic.Size = new Size(504, 176);
backPic.Visible = true;
backPic.Show();
backPic.SendToBack();
this.Invalidate();
#endregion
}
当我调用Invalidate() 方法强制它重新绘制时,为什么新控件不会出现在表单上?
【问题讨论】:
-
由于设计器生成的代码可以正常工作,首先使用设计器生成代码,然后将其作为您自己代码的起点。在 WinForms 中,默认情况下几乎所有内容都可以正常工作...如一个答案所示,您可能忘记添加控件...并且如另一个答案中所建议的,如果您想做报告,您可能想改用报告.