0

基本的に私がしていることは次のとおりです。ボタンをクリックして(n)個のテキストボックスを追加します。もう一度クリックすると、次のコードが実行されます。

foreach (Control c in this.Controls)
{
    TextBox tb = c as TextBox;
    if (tb != null)
    {
        this.Controls.Remove(tb);
        tb.Dispose();
    }
}

再び (n) 個のテキスト ボックスを追加しますが、古いテキスト ボックスの 1 つおきの項目が残ります。何か案は?

4

1 に答える 1

1

反復しているコレクションからアイテムを削除するのは悪い考えです。これを試して:

List<Control> toBeRemoved = new List<Control>();
foreach (Control c in this.Controls)
{
    if (c instanceof TextBox)
    {
        toBeRemoved.Add(c);
    }
}
foreach (Control c in toBeRemoved)
{
    this.Controls.Remove(c);
    c.Dispose();
}
于 2013-05-17T00:25:01.680 に答える