C#-清除TableLayoutPanel的一列而没有循环?

我有一个带有两列的TableLayoutPanel.我想从第二个控件中动态删除所有控件.有没有简单的方法?我真的不希望这样繁琐的循环.

编辑:
“循环”是指实际上编写for循环.在后台循环的LINQ解决方案非常好.

解决方法:

它在很大程度上取决于您的意思:“清除列”.在此示例中,我选择将可见性设置为false.

这看起来真的很可怕:

// grab all controls from Colum 2 (index == 1)
List<Control> Col_2_Stuff = tableLayoutPanel1.Controls.OfType<Control>()
             .Where(x => tableLayoutPanel1.GetPositionFromControl(x).Column == 1).ToList();

// make them invisible
Col_2_Stuff.Select(c => { c.Visible = false; c = null; return c; }).ToList();

但这确实起作用

编辑:

这是实际删除它们的行:

Col_2_Stuff.Select(c => { tableLayoutPanel1.Controls.Remove(c); return c; }).ToList();

受到@LarsTech的启发:您还可以稍后调用dispose并清除列表

Col_2_Stuff.Select(c => { tableLayoutPanel1.Controls.Remove(c); c.Dispose(); return c; }).ToList();

Col_2_Stuff.Clear();
上一篇:c#-用于自定义控件的文本框字符串/文本填充


下一篇:标签c#-INotifyPropertyChanged-更改PropertyName无效