所以我创建了一个由Form
派生的简单类,其中包含ComboBox
和Button
。
在该类中,构造函数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()
,我想知道原因。
任何帮助都将不胜感激。
提前致谢。
答案 0 :(得分:2)
查看InitializeComponents
中的Form1.Designer.cs
。
如果你打电话两次,你将有两个Combobox。您可以编辑一个可见的。另一个(第二个)是您的代码所指的那个。
您可以通过引入名为Counter
的静态字段来“证明”它。然后稍微编辑InitializeComponent
,以便根据Counter
移动ComboBox并将ComboBox.Tag
设置为Counter
。最后,增加Counter
。
然而,正如您肯定会注意到的,这只是一个学术相关的问题。两次致电InitializeComponents
没有任何好处。