2013-07-18 31 views
0

所以我做了一個簡單的類,由Form派生,ComboBoxButton在構造函數中調用InitializeComponent()兩次

在這個類的構造函數InitializeComponent()如下得到射擊兩次。 (只用於研究目的)

public Form1() 
{ 
    InitializeComponent(); 
    InitializeComponent(); // One more time 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show(comboBox1.Text); 
} 

然後我點擊無論在comboBox1項目,comboBox1.Text總是String.Empty

解決此問題的唯一方法似乎是撥打comboBox1.Dispose()之間的2 InitializeComponent(),我想知道爲什麼。

任何幫助,將不勝感激。

在此先感謝。

+10

基本上'InitializeComponent'不是*設計*被執行多次。我懷疑有一些細微的問題圍繞着哪個順序創建,其中會影響到這一點的控件,但簡單的解決方案不是這樣做。我不認爲你會從這些進一步的研究中獲得任何有用的信息。 –

回答

2

中只看Form1.Designer.csInitializeComponents

如果你調用它兩次,你將有兩個組合框的。一個可能是你可以編輯的可見的。另一個(第二個)是你的代碼引用的那個。

你可以通過引入一個名爲Counter靜態字段「證明」它。然後稍微編輯InitializeComponent,使得它移動的有點不同組合框上Counter並設置ComboBox.TagCounter。最後,增加Counter

然而,正如你肯定會注意到,這是唯一的學術意義的問題。兩次撥打InitializeComponents毫無益處。

相關問題