事件发生后才会发生?

时间:2012-09-10 14:53:01

标签: c# .net winforms events

我试着理解为什么我不能在构造函数的最后一行中邀请事件? 事件“formload”是否在施工结束后发生?

public Form1()
    {
        InitializeComponent();
        button1.Text = "a";
        button1.PerformClick();
    }

private void button1_Click(object sender, EventArgs e)
    {
        button1.Text = "b";
    }

2 个答案:

答案 0 :(得分:2)

这种行为是因为如果控件是在windows消息上构建的,那么只有在表单实例存在并且有句柄的情况下才能生成控件,而不是在构建它时。

必须打开表单以确保控件正常工作。

在构造函数上引发事件并不是最佳做法

答案 1 :(得分:0)

测试。不依赖于创建的控件。

public Form1()
{
    InitializeComponent();
    button1.Text = "A";
    button1_Click_helper();
}

private void button1_Click(object sender, EventArgs e)
{
    button1_Click_helper();
}

private void button1_Click_helper()
{
    button1.Text = "B";
}