1

イベントボタンクリックtextboxからコントロールを削除しようとしています:panel

private void button2_Click(object sender, EventArgs e)
{
   panel1.Controls.OfType<TextBox>().ToList().Clear();
}

しかし、それは機能しません

4

2 に答える 2

4

あなたのアプローチが機能しない理由は、パネルに接続されていない新しいリストを作成していて(あなたのToList呼び出し)、そのリストをクリアして、事実上何もしていないからです。

Controlsコレクションの各アイテムを直接削除する必要があります。

 var textBoxes = panel1.Controls.OfType<TextBox>().ToList();
 foreach(var box in textBoxes)
     panel1.Controls.Remove(box);
于 2012-12-14T16:08:42.570 に答える
2

コントロールの内容を単純に消去する (または作成したばかりのリストから削除する) のではなく、フォームからコントロールを削除する場合は、パネルから削除する必要があります。ただし、ワンライナーでこれを実現できます。

panel1.Controls
      .OfType<TextBox>()
      .ToList()
      .ForEach(t => panel1.Controls.Remove(t));
于 2012-12-14T16:09:16.800 に答える