所以我有一个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()
方法强制重新绘制时,为什么新控件不会出现在窗体上?
答案 0 :(得分:2)
您似乎没有将它们添加到Controls
:
请在指定位置和控件初始化的其余部分后在每个控件上尝试此操作:
this.Controls.Add(lblName)
答案 1 :(得分:0)
Mong Zhu似乎是对的,如果你可以使用一些第三方的图书馆,我也建议你去看一下某种报告设计师(我不确定winforms是否像DevExpress报道那样)
我想这会对您在项目中所做的事情有所帮助。