新添加的控件不会对Form进行绘制

时间:2017-08-30 10:37:12

标签: c# winforms

所以我有一个Form 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()方法强制重新绘制时,为什么新控件不会出现在窗体上?

2 个答案:

答案 0 :(得分:2)

您似乎没有将它们添加到Controls

请在指定位置和控件初始化的其余部分后在每个控件上尝试此操作:

this.Controls.Add(lblName)

答案 1 :(得分:0)

Mong Zhu似乎是对的,如果你可以使用一些第三方的图书馆,我也建议你去看一下某种报告设计师(我不确定winforms是否像DevExpress报道那样)

我想这会对您在项目中所做的事情有所帮助。