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

时间:2011-12-06 18:58:46

标签: c# winforms

我认为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);
    }
}

最初,这表明了这一点:

enter image description here

2秒后 - 这个:

enter image description here

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

this.Update();