在构造函数中调用InitializeComponent()两次
本文关键字:两次 InitializeComponent 调用 构造函数 | 更新日期: 2023-09-27 18:23:39
所以我用ComboBox
和Button
做了一个由Form
派生的简单类。
在该类的构造函数中,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
。
解决这个问题的唯一方法似乎是在2个InitializeComponent()
之间调用comboBox1.Dispose()
,我想知道为什么。
如有任何帮助,我们将不胜感激。
提前谢谢。
查看Form1.Designer.cs
中的InitializeComponents
。
如果你叫两次,你就会有两个组合框。其中一个可能是您可以编辑的可见项。另一个(第二个)是您的代码所指的那个。
您可以通过引入一个名为Counter
的静态字段来"证明"它。然后稍微编辑InitializeComponent
,使其根据Counter
将组合框移动一位,并将ComboBox.Tag
设置为Counter
。最后,增加Counter
。
然而,正如你肯定会注意到的,这只是一个学术相关性的问题。两次呼叫InitializeComponents
没有任何好处。