2012-12-14 17 views

回答

4

之所以你方法不起作用,是你正在創建一個新的列表,沒有連接到面板(你的ToList調用),然後清除該列表,實際上什麼都不做。

您需要刪除的Controls收集直接的每個項目:

var textBoxes = panel1.Controls.OfType<TextBox>().ToList(); 
foreach(var box in textBoxes) 
    panel1.Controls.Remove(box); 
+0

+1解釋他的代碼 –

2

如果你想從表單中刪除控制而不是簡單地明確自己的內容(或者從您剛纔創建的列表中刪除它們),你需要從面板中刪除它們。儘管如此,你仍然可以通過一行代碼實現:

panel1.Controls 
     .OfType<TextBox>() 
     .ToList() 
     .ForEach(t => panel1.Controls.Remove(t));