作为此问题的后续内容 - Direct access to TableLayoutPanel Cells,如何枚举TableLayoutPanel中单元格内的控件?如下图所示,我想枚举给定单元格中的所有复选框(这样我就可以更改它们的值)。
我已经编写了这段代码来尝试解释我正在尝试做什么(这个是一个复选框);
var tableLayoutPanel = (TableLayoutPanel)this.Parent;
var cellPosition = tableLayoutPanel.GetCellPosition(this);
var controlAtPosition = tableLayoutPanel.GetControlFromPosition(cellPosition.Column,cellPosition.Row).Controls;
foreach (Control control in controlAtPosition)
{
var ctrl = control.Name;
// *** Enumerates nothing
}
答案 0 :(得分:1)
您的示例代码令人困惑。显然,TableLayoutPanel单元格中只允许一个控件,因此在您的示例中,您有一个容器控件来保存这些复选框。
简单示例:
Panel p = tableLayoutPanel1.GetControlFromPosition(0, 0) as Panel;
if (p != null) {
foreach (CheckBox cb in p.Controls.OfType<CheckBox>()) {
MessageBox.Show(cb.Name + " " + cb.Checked.ToString());
}
}