2014-03-01 8 views
0

저는 몇 시간 동안이 글을 쓰고 있습니다. 이제는 내 좌절감을 높이는 서클에서 뛰어 다니고 있습니다.UserControl이 SET를 사용하지 않는 것으로 보입니다.

나는이 컨트롤에 레이블과 콤보 상자라는 다소 단순한 사용자 컨트롤이 있습니다. 레벨 텍스트를 변경하기위한 공개 속성을 공개하고 DropDownItems에 대한 GET/SET을 만들었습니다.

private List<DropdownItemObject> _dropDownItems = new List<DropdownItemObject>(); 

이 클래스는 항목 (들) 콤보 상자에 추가됩니다 다음과 같이

내 콤보 상자 항목을 포함하는 목록

가 선언된다.

public class DropdownItemObject 
{ 
    public DropdownItemObject() 
    { 
     Tag = null; 
     Object = null; 
    } 

    public DropdownItemObject(string text, object _object = null, object tag = null) 
    { 
     Text = text; 
     Object = _object; 
     Tag = tag; 
    } 

    public object Tag { get; set; } 

    public object Object { get; set; } 

    public string Text { get; set; } 

} 

이것은 UserControl의 노출 된 속성입니다. 사용자 정의 컨트롤의 콤보 상자는 'comboPrimary'라고합니다.

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Editor(typeof (CollectionEditor), typeof (UITypeEditor))] 
     public List<DropdownItemObject> DropDownItems 
     { 
      get 
      { 
       return _dropDownItems; 
      } 
      set 
      { 
       _dropDownItems = value; 
       comboPrimary.Items.Clear(); 

       foreach (DropdownItemObject item in _dropDownItems) 
       { 
        comboPrimary.Items.Add(item); 
       } 
      } 
     } 

이 컨트롤을 양식에 추가하면 컬렉션 편집기를 사용하여 드롭 다운 항목을 추가 할 수 있습니다. 아니면 프로그래밍 방식으로이 작업을 수행 할 수 있습니다.

uc1.DropDownItems.Add(new DropdownItemObject("ITEM 998")); 

그러나 런타임에는 항목이 드롭 다운 목록에 표시되지 않습니다.

+0

'comboPrimary'에 대해'DisplayMember '를 어디에 설정하는지 알 수 없습니다. –

답변

0

DropDownItems.AddDropDownItems 설정기를 호출하지 않습니다. 속성 값을 설정하지 않고 현재 값에 대한 메서드를 호출하기 만하면됩니다.

당신은 뭔가

uc1.DropDownItems = new List<DropdownItemObject>() { 
    new DropdownItemObject("ITEM 998") }; 

같은 세터 코드를 호출하기 위해 말을해야합니다.

또한 comboPrimary.Items.Add을 호출하는 UserControl 클래스에 자신의 Add 메서드를 노출 할 수 있습니다.

public void Add(DropdownItemObject item) { 
    comboPrimary.Items.Add(item); 
} 
+0

대답은 내 앞에서 바로 나, 내가 왜 그걸 놓친 지 모르겠다. – user3366988

관련 문제