2012-12-07 51 views
-1

作爲這個問題的後續內容 - Direct access to TableLayoutPanel Cells,如何枚舉TableLayoutPanel中單元格內的控件?從下面的圖片中,我想枚舉給定單元格中的所有複選框(以便我可以更改它們的值)。枚舉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

您的示例代碼很混亂。顯然,在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()); 
    } 
}