我的 Windows 窗体中有一个选项卡控件,我想循环访问两个不同选项卡中的每个元素。打开文件时,我希望启用两者的所有元素,而当文件关闭时,所有元素都将被禁用。
但是,我不知道如何完成此操作,因为控件不在数组或列表中,而是在 ControlsCollection 中。我刚才问过有关 foreach 语句的问题,并了解了一些有关 lambda 的知识,但我不知道如何在这里应用它。
这是我所拥有的:
List<Control.ControlCollection> panels = new List<Control.ControlCollection>();
panels.Add(superTabControlPanel1.Controls);
panels.Add(superTabControlPanel2.Controls);
foreach(Control.ControlCollection ctrlc in panels){
foreach (Control ctrl in ctrlc) {
}
}
这是否可以通过一个 foreach 语句实现,或者更简单一些?
最佳答案
我会使用 Linq,具有以下内容:
foreach (var ctrl in panels.SelectMany (x => x.Cast<Control> ())) {
// Work with the control.
}
关键是使用 Cast IEnumerable 上的扩展方法,使其可用于 SelectMany。
关于c# - 对多个 ControlCollection 进行 Foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8696405/