Перечисление элементов управления в позиции ячейки TableLayoutPanel

Как следует из этого вопроса - Прямой доступ к ячейкам 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
}

person wonea    schedule 07.12.2012    source источник


Ответы (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());
  }
}
person LarsTech    schedule 07.12.2012