【发布时间】:2012-11-30 12:17:20
【问题描述】:
我已经构建了一个 Winforms 表格布局,其中每个单元格中有许多元素。我要做的是枚举我关心的特定类型的所有控件,并删除它们相应的 Click 值。这是在运行时完成的,这就是为什么我不只是设置控件的初始属性。
我尝试过使用 Control.ControlCollection 属性,但运气不佳,因为它不是 IEnumerable。替代方案我有以下代码,但问题是在控件中找不到控件,并且抛出空引用异常,因为我试图在一个空对象上设置 .Click,但肯定是这个对象应该存在!救命!?
for (int row = 1; row < tblLayoutPanel.RowCount; row++)
{
for (int column = 0; column < tblLayoutPanel.ColumnCount; column++)
{
Type controlType = tblLayoutPanel.GetControlFromPosition(column, row).GetType();
if (controlType == typeof(CTLLabel) ||
controlType == typeof(OutputLabel))
{
Controls[tblLayoutPanel.GetControlFromPosition(column, row).Name].Click += null;
// Control is never found! *why?*
}
}
}
【问题讨论】:
标签: c# winforms tablelayoutpanel