2011-02-22 4 views
3

ASP.NET에서 제공되는 winforms 프로그래밍에 비교적 익숙하며 checklistbox.items의 "Enabled"필드에 바인딩하는 데 어려움을 겪고 있습니다.CheckedListBox.Items - Winforms에서 바인딩 속성 사용

class A 
{ 
    public string Name {get;set;} 
    public bool Enabled {get; set;} 
} 

내가 다음 목록 항목을 만들고 checkedlistbox 바인딩 :

예를 들어, 나는 있습니다.

List<A> aList = new List<A>(
    new A{Name="Item1", Enabled=true}, 
    new A{Name="Item2", Enabled=false}); 

CheckedListBox.DataSource = aList; 
CheckedListBox.DisplayMember = "Name"; 

마지막으로 "사용 가능 == false"인 항목을 체크리스트에서 사용하지 않도록 설정하려면 어떻게해야합니까?

물론 Checked 속성을 사용하여 동일한 작업을 수행해야하지만이 예제에 추가하지는 않습니다.

감사합니다,

답변

1

당신은 윈폼 CheckedListBox 풍부한 데이터 바인딩의이 종류를 수행 할 수 없습니다.

당신은 데이터 소스를 설정할 수 있습니다 다음 DisplayMember 및 ValueMember 속성은 그러나 당신의에 거기에서 다음과 같이

가 기본 바인딩을 설정합니다 (사용 및 검사 속성을 설정 포함) 코드로 나머지를 할 필요가 :

checkedListBox.DataSource = aList; 
checkedListBox.DisplayMember = "Name"; 
checkedListBox.ValueMember = "Name"; 

거기에서 필요에 따라 개별 항목 속성을 설정하여 데이터 소스를 반복해야합니다.

당신이 할 수 있을지도 모르는 (그러나 나는 그것을 시험해 보지 않았다) CheckedListBox를 하위 클래스로 만들었지 만 새로운 클래스의 일부 사용자 정의 바인딩 코드.

그럴 경우 상황에 따라 코드를 코드에서 제거하는 것이 더 효율적인 해결책이 될 수 있습니다.

+0

데이비드. 나는 가능하지 않았지만 다른 기술에서와 마찬가지로 내가 틀렸다고 큰 기대를 가지고 있다고 생각했다. 결국에는 그리드와 같은 다른 컨트롤을 사용하고 활성화 여부를 표시하는 확인란을 표시하고 UI 향상을 위해 색상을 변경할 수 있습니다. –

+0

WinForms의 dataGridView 컨트롤은 * great *이며 필요한 것을 처리합니다. dataGridView FAQ 사본 - 원하는 결과를 얻는 가장 좋은 방법을 찾는 데 도움이되는 훌륭한 문서를 준비하십시오. –

+0

리플렉션에서 dataGridView 행의 enabled 속성을 바인딩 할 수 있다고 생각하지 않습니다. 확인해 봤어. –