在构造函数中调用InitializeComponent()两次

时间:2013-07-18 08:16:45

标签: c# .net

所以我创建了一个由Form派生的简单类,其中包含ComboBoxButton

在该类中,构造函数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()之间调用InitializeComponent(),我想知道原因。

任何帮助都将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:2)

查看InitializeComponents中的Form1.Designer.cs

如果你打电话两次,你将有两个Combobox。您可以编辑一个可见的。另一个(第二个)是您的代码所指的那个。

您可以通过引入名为Counter的静态字段来“证明”它。然后稍微编辑InitializeComponent,以便根据Counter移动ComboBox并将ComboBox.Tag设置为Counter。最后,增加Counter

然而,正如您肯定会注意到的,这只是一个学术相关的问题。两次致电InitializeComponents没有任何好处。