我从Form3
运行程序。为什么程序首先执行Picture1_Paint
Form3
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();
}
,如何更改序列?
{{1}}
答案 0 :(得分:2)
Form.Show()仅调用启动使窗口可见的过程。在方法完成并执行重新进入消息循环之前,您实际上无法看到它。如果没有其他重要的事情需要完成,那么将传递Paint事件。绘画顺序是背靠背的。
你强制通过调用Refresh()来运行pictureBox1的Paint事件。这不是必需的,它会自动获取Paint事件。但代码肯定会让pb的Paint事件在任何其他事件之前运行。只需删除Refresh()调用即可。
如果有任何理由强制进行绘制,则使用Invalidate()方法告诉Windows该窗口应该重新绘制。您可以使用Update()方法强制立即传递Paint事件。