2012-12-16 5 views
0

나는 사용자 지정 컨트롤을 가지고 및 속성 중 하나입니다 : 제어 생성자에서 속성을 설정 한 후 속성이 null로 설정됩니까?

public List<SelectionBox> Boxes { get; set; } 

나는이 : 내가 여기에 브레이크 포인트를 할 경우

this.Boxes = new List<SelectionBox>(); 
this.Boxes.Add(new SelectionBox("", Color.Red)); 

는 InitializeComponent를()는, 그것을 보여줍니다 전에 그 상자는 1 요소를 가진 SelectionBox의 목록입니다. 그러나 다음의 안에 내 OnPaint를 다음 작업을 수행 할 경우는, 몇 가지 이상한 행동을 null로 설정 한 오버라이드 (override) :

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() 안에있었습니다. –

관련 문제