0

Formそこで、 aComboBoxと aで派生した単純なクラスを作成しましたButton

そのクラスのコンストラクターでInitializeComponent()は、次のように 2 回起動されます。(あくまで勉強目的)

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

で見てInitializeComponentsくださいForm1.Designer.cs

2 回呼び出すと、2 つの Combobox が作成されます。そのうちの 1 つは、編集可能な上に表示されている可能性があります。もう 1 つ (2 番目) は、コードが参照するものです。

という静的フィールドを導入することで、それを「証明」できますCounterInitializeComponent次に、に応じて ComboBox を少し移動し、 にCounter設定ComboBox.Tagするように、少し編集しCounterます。最後に、インクリメントしますCounter

ただし、お気づきのように、これは学術的な関連性の問題にすぎません。2回コールしてもメリットはありませんInitializeComponents

于 2013-07-18T08:20:20.753 に答える