Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在构造函数中调用InitializeComponent()两次_C#_.net - Fatal编程技术网

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

解决此问题的唯一方法似乎是在2
InitializeComponent()
之间调用
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);
}