如何在显示表单后运行代码? (麻烦“显示”。)

我以为Shown就是答案。 但似乎并非所有控制都是平等的。 一个面板立即显示,而标签 – 不是。

我有以下代码:

 public partial class Form2 : Form { Panel p = new Panel() { BackColor = Color.Green }; Label l = new Label() { Text = "abc", Location = new Point(0, 100) }; public Form2() { Controls.Add(p); Controls.Add(l); Shown += new EventHandler(Form2_Shown); } void Form2_Shown(object sender, EventArgs e) { System.Threading.Thread.Sleep(2000); } } 

最初,这表明:

在此处输入图像描述

2秒后 – 这个:

在此处输入图像描述

那么如何在“第二张图片”之后运行代码呢?

 void Form2_Shown(object sender, EventArgs e) { Application.DoEvents(); System.Threading.Thread.Sleep(2000); } 

我认为这可以得到你想要的东西,但恕我直言,如果你有一个漫长的操作,你应该开始另一个线程。

在事件处理程序的开头添加以下内容:

 this.Update();