0

所以我做了一个简单的类,由FormaComboBox和 a派生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()在 2 之间调用InitializeComponent(),我想知道为什么。

任何帮助,将不胜感激。

提前致谢。

4

1 回答 1

2

InitializeComponentsForm1.Designer.cs.

如果你调用它两次,你将有两个组合框。一个可能是您可以编辑的可见。另一个(第二个)是您的代码引用的那个。

您可以通过引入一个名为Counter. 然后InitializeComponent稍微编辑一下,使其根据Counter并设置ComboBox.TagCounter. 最后,递增Counter

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

于 2013-07-18T08:20:20.753 回答