0

各セルに多くの要素を持つ 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?*
        }
    }
}
4

1 に答える 1

0

GetControlFromPositionその理由は、メソッドを使用して取得しているコントロールの親コントロールがtblLayoutPanel. コレクションではなくtblLayoutPanel、コントロールの親で子コントロールを取得しようとしています。tblLayoutPaneltblLayoutPanel.Controls

このようにコントロールにアクセスする代わりに、メソッドを使用して取得したコントロールを使用しないのはなぜですかGetControlFromPosition。これを試してください: tblLayoutPanel.GetControlFromPosition(column, row).Click

于 2012-11-30T12:30:56.990 に答える