3

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

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

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

2 回答 2

2

这种行为是因为如果控件是在 windows 消息上构建的,那么它仅在表单实例存在并且具有句柄时才有效,而在它仍然构建时则无效。

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

在构造函数上引发事件并不是最佳实践

于 2012-09-10T15:00:46.427 回答
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";
}
于 2012-09-10T15:33:55.580 回答