0

WinForm のすべてのボタンを削除しようとしていますが、どういうわけか、フォームにいくつかのボタンが保持されます。フォーム内のすべてのボタンを削除するにはどうすればよいですか?私のコードの間違いは何ですか?!

void ClearScreen()
    {
        foreach (Control c in this.Controls)
        {
            if (c is Button)
                this.Controls.Remove(c);

        }


    }
4

3 に答える 3

3

コードが機能しない理由は、列挙子を使用してコレクションをループしている間にコレクションを変更しているためです。

于 2012-05-28T09:42:32.730 に答える
2

これを試して:

void ClearScreen()
{
    List<Button> _buttons = this.Controls.OfType<Button>().ToList();

    foreach (var button in _buttons)
    {
        this.Controls.Remove(button);
    }
}
于 2012-05-28T09:58:13.450 に答える
0
foreach (Button btn in this.Controls.OfType<Button>())
            {
                this.Controls.Remove(bbb);
            }

これは、フォームからすべてのボタンを削除する一般的な方法です

于 2012-05-28T10:06:41.043 に答える