我从Form3
运行程序。为什么程序先执行Form3
Picture1_Paint
而不是Picture1_Paint
Form1
,如何更改顺序?
private void Form3_Load(object sender, EventArgs e)
{
ss = new Form1();
ss.Show(); // Here Form1 is loaded, but its Picture1_paint is not executed
FootingWidth.Text = ss.richTextBox9.Text;
pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
pictureBox1.Refresh();
}
private void Form1_Load_1(object sender, EventArgs e)
{
richTextBox1.Text = 1.0.ToString();
richTextBox2.Text = 0.403.ToString();
richTextBox3.Text = 0.0.ToString();
pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
pictureBox1.Refresh();
}
Form.Show() 调用仅启动使窗口可见的过程。 在方法完成并且执行重新进入消息循环之前,您实际上看不到它。 之后,如果不需要执行任何其他重要操作,则传递 Paint 事件。 绘画顺序是从后到前。
您通过调用 Refresh() 强制 pictureBox1 的 Paint 事件运行。 这不是必需的,它将自动获取 Paint 事件。 但是代码肯定会始终让 pb 的 Paint 事件先于任何其他事件运行。 只需删除 Refresh() 调用即可。
如果有任何理由强制进行绘制,请使用 Invalidate() 方法告诉 Windows 应该重新绘制窗口。 可以使用 Update() 方法强制立即传递 Paint 事件。