2012-09-10 39 views
3

我試着理解爲什麼我不能在構造函數的最後一行邀請事件? 事件「formload」是否在施工結束後發生?事件只發生在施工後?

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

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

'事件「formload」是否在施工結束後發生?「確實如此。當表單變爲可見時觸發'Load'事件,而不是在構建時觸發。 –

+0

考慮一個button1_Click_Helper類來完成實際的工作並直接調用helper。 – Paparazzi

+0

@Blam你不需要做一個輔助方法來做到這一點。你可以按照原樣執行'button1_Click'方法。 – Servy

回答

2

此行爲是因爲,如果控制是建立在Windows消息,只有在形式實例存在而且有一個把手,這是不是同時它仍然建工程。

窗體必須打開才能確保控件正常工作。

而且它不是最好的做法對你的構造

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"; 
} 
+0

您可以將'button1_Click(this,new EventArgs())'添加到構造函數中;你不需要輔助方法。 – Servy

+0

@Servy OK就行了。 – Paparazzi