C# 在构造函数中调用InitializeComponent()两次
因此,我用C# 在构造函数中调用InitializeComponent()两次,c#,.net,C#,.net,因此,我用组合框和按钮创建了一个由表单派生的简单类 在该类的构造函数中,InitializeComponent()被激发两次,如下所示。 (仅供学习之用) 然后单击comboBox1中的任何项目,comboBox1.Text总是String.Empty 解决此问题的唯一方法似乎是在2InitializeComponent()之间调用comboBox1.Dispose(),我想知道原因 任何帮助都将不胜感激 提前感谢。查看Form1.Designer.cs中的初始化组件 如果你叫它两次,你会有两个
组合框和按钮创建了一个由表单
派生的简单类
在该类的构造函数中,InitializeComponent()
被激发两次,如下所示。
(仅供学习之用)
然后单击comboBox1
中的任何项目,comboBox1.Text
总是String.Empty
解决此问题的唯一方法似乎是在2InitializeComponent()
之间调用comboBox1.Dispose()
,我想知道原因
任何帮助都将不胜感激
提前感谢。查看Form1.Designer.cs
中的初始化组件
如果你叫它两次,你会有两个组合框。其中一个可能是您可以编辑的屏幕上可见的。另一个(第二个)是代码引用的
您可以通过引入一个名为计数器的静态字段来“证明”它。然后稍微编辑初始化组件
,使其根据计数器
稍微移动组合框,并将组合框.Tag
设置为计数器
。最后,递增计数器
然而,你肯定会注意到,这只是一个与学术相关的问题。调用InitializeComponent
两次没有任何好处。基本上InitializeComponent
的设计不允许执行多次。我怀疑在创建控件的顺序上会存在一些微妙的问题,但简单的解决方案是不这样做。我不认为你会从进一步的调查中得到任何有用的信息。
public Form1()
{
InitializeComponent();
InitializeComponent(); // One more time
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(comboBox1.Text);
}