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 回答