カスタム コントロールがあり、プロパティの 1 つは次のとおりです。
public List<SelectionBox> Boxes { get; set; }
コントロールコンストラクターには次のものがあります。
this.Boxes = new List<SelectionBox>();
this.Boxes.Add(new SelectionBox("", Color.Red));
InitializeComponent() の前に、ここでブレークポイントを設定すると、Boxes が 1 つの要素を持つ SelectionBox のリストであることがわかります。しかし、OnPaint オーバーライドの内部では、次のようにすると、いくつかの奇妙な動作で null に設定されています。
foreach (SelectionBox box in Boxes) {}
エラーはスローされず、そこで関数を終了するだけです。私は何を間違っていますか?
選択ボックスの構造:
[Serializable]
public struct SelectionBox
{
public string Name;
public Color Colour;
public Rectangle BoxRectangle;
public bool IsActive;
public SelectionBox(string name, Color colour)
{
this.Name = name;
this.Colour = colour;
this.IsActive = false;
this.BoxRectangle = new Rectangle(0, 0, 0, 0);
}
}