枚举TableLayoutPanel单元格位置内的控件

时间:2012-12-07 10:36:33

标签: c# winforms tablelayoutpanel

作为此问题的后续内容 - Direct access to TableLayoutPanel Cells,如何枚举TableLayoutPanel中单元格内的控件?如下图所示,我想枚举给定单元格中的所有复选框(这样我就可以更改它们的值)。

Example 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
}

1 个答案:

答案 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());
  }
}