各セルに多くの要素を持つ Winforms テーブル レイアウトを作成しました。私がやろうとしているのは、関心のある特定のタイプのすべてのコントロールを列挙し、対応するクリック値を削除することです。これは実行時に行われるものです。そのため、コントロールの初期プロパティを設定するだけではありません。
Control.ControlCollection プロパティを操作してみましたが、IEnumerable ではないため、うまくいきませんでした。代わりに次のコードがありますが、問題は、コントロールがコントロールに見つからず、.Clickを空のオブジェクトに設定しようとしているために Null 参照例外がスローされることですが、このオブジェクトは必ず存在するはずです! ヘルプ!?
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?*
}
}
}