イベントボタンクリックtextbox
からコントロールを削除しようとしています:panel
private void button2_Click(object sender, EventArgs e)
{
panel1.Controls.OfType<TextBox>().ToList().Clear();
}
しかし、それは機能しません
イベントボタンクリックtextbox
からコントロールを削除しようとしています:panel
private void button2_Click(object sender, EventArgs e)
{
panel1.Controls.OfType<TextBox>().ToList().Clear();
}
しかし、それは機能しません
あなたのアプローチが機能しない理由は、パネルに接続されていない新しいリストを作成していて(あなたのToList
呼び出し)、そのリストをクリアして、事実上何もしていないからです。
Controls
コレクションの各アイテムを直接削除する必要があります。
var textBoxes = panel1.Controls.OfType<TextBox>().ToList();
foreach(var box in textBoxes)
panel1.Controls.Remove(box);
コントロールの内容を単純に消去する (または作成したばかりのリストから削除する) のではなく、フォームからコントロールを削除する場合は、パネルから削除する必要があります。ただし、ワンライナーでこれを実現できます。
panel1.Controls
.OfType<TextBox>()
.ToList()
.ForEach(t => panel1.Controls.Remove(t));