2012-12-16 87 views
0

我有一個自定義的控制和屬性之一是:屬性設置爲null後設置爲null?

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); 
    } 
} 
+2

恐怕這還不足以推測可能會出現什麼問題。你可以展示哪些代碼的相關部分? – Destrictor

+0

你確定你正在使用正確的箱子實例嗎? – Woot4Moo

+0

你可以顯示你的SelectionBox類嗎? –

回答

1

如果你需要追蹤如何屬性被神祕地獲取其值設置爲null,有明確的get/set實現重寫屬性,在二傳手下降斷點,並檢查了出現斷點時的調用堆棧

private List<SelectionBox> _boxes; 
public List<SelectionBox> Boxes { get { return _boxes; } set { _boxes = value; } } 
+0

謝謝,應該在我發佈這個之前做到這一點。出於某種原因,我的主要形式是將其設置爲null。 this.dragControlTest.Boxes = null;在主窗體的InitializeComponent()中。 –