-1

この質問の続きとして-TableLayoutPanelセルへの直接アクセス、TableLayoutPanelのセル内のコントロールをどのように列挙しますか?下の図のように、特定のセルのすべてのチェックボックスを列挙します(値を変更できるようにします)。

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セルで許可されるコントロールは1つだけなので、この例では、これらのチェックボックスを保持するコンテナーコントロールがあります。

簡単な例:

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 に答える