2

C#のflowlayoutpanel内のチェックボックスの値を更新しようとしています。チェックボックスは、作成された「selected1」という名前のパネルごとに生成されます。

私が使用しているコードの特定のチェックボックスにアクセスしようとすると

flowLayoutPanel2.Controls[e.Index].Controls["selected1"]

CheckBoxオブジェクトを作成し、Nameプロパティを値として取得しようとすると、次のようなエラーが発生します。

System.NullReferenceException: Object reference not set to an instance of an object.

私が使用しているコードは次のとおりです。

try
{
    System.Windows.Forms.Control checkBox = new System.Windows.Forms.Control();
    checkBox = flowLayoutPanel2.Controls[e.Index].Controls["selected1"];
    MessageBox.Show(Convert.ToString(checkBox.Name));
}
catch (Exception ex)
{
    MessageBox.Show(Convert.ToString(ex));
}

チェックボックスに間違った方法でアクセスしようとしているだけだと思います。まるでそれを囲んでいるパネルにアクセスしようとしているかのように、問題なくパネルを操作できます。

ありがとう、サム

4

1 に答える 1

3

どこから来ているのかは明らかでe.Indexはありませんが、必要ではないと思います:

CheckBox checkBox;
if (flowLayoutPanel2.Controls.ContainsKey("selected1")) {
  checkBox = (CheckBox)flowLayoutPanel2.Controls["selected1"];
}

この値に関心がある場合は、Control だけでなく CheckBox を使用することをお勧めします。

于 2012-07-23T19:03:25.570 に答える