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

本文关键字:两次 InitializeComponent 调用 构造函数 | 更新日期: 2023-09-27 18:23:39

所以我用ComboBoxButton做了一个由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(),我想知道为什么。

如有任何帮助,我们将不胜感激。

提前谢谢。

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

查看Form1.Designer.cs中的InitializeComponents

如果你叫两次,你就会有两个组合框。其中一个可能是您可以编辑的可见项。另一个(第二个)是您的代码所指的那个。

您可以通过引入一个名为Counter的静态字段来"证明"它。然后稍微编辑InitializeComponent,使其根据Counter将组合框移动一位,并将ComboBox.Tag设置为Counter。最后,增加Counter

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