-1

作为这个问题的后续 - 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
}
4

1 回答 1

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());
  }
}
于 2012-12-07T14:11:37.770 回答