2013-07-18 30 views
0

所以我做了一个简单的类,由Form派生,ComboBoxButton在构造函数中调用InitializeComponent()两次

在这个类的构造函数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(),我想知道为什么。

任何帮助,将不胜感激。

在此先感谢。

+10

基本上'InitializeComponent'不是*设计*被执行多次。我怀疑有一些细微的问题围绕着哪个顺序创建,其中会影响到这一点的控件,但简单的解决方案不是这样做。我不认为你会从这些进一步的研究中获得任何有用的信息。 –

回答

2

中只看Form1.Designer.csInitializeComponents

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

你可以通过引入一个名为Counter静态字段“证明”它。然后稍微编辑InitializeComponent,使得它移动的有点不同组合框上Counter并设置ComboBox.TagCounter。最后,增加Counter

然而,正如你肯定会注意到,这是唯一的学术意义的问题。两次拨打InitializeComponents毫无益处。

相关问题