2017-11-11 1 views
1

속성 값을 함께 병합하는 새 클래스를 만들 필요없이 CheckedListBox에 다중 열 표시 멤버를 설정하는 방법이 있습니까? 예를 들어 DisplayMember를 무시하는 것과 같은 것? 나는 당신이 DisplayMember를 오버라이드 (override) 할 필요가 없습니다 C# 4.0 VS 2015C# Override CheckedBoxList 표시 멤버

+0

을 = 참된. CheckedListBox를 가르치는 것은 누구나할만한 가치가있는 것은 아닙니다. –

+0

실제 멀티 컬럼 컨트롤을 찾고 있다면,'ListView' 또는'DataGridView'가 당신이 찾고있는 것입니다. 그러나 여러 속성에 기반한'CheckedListBox'의 표시 값을 포맷하는 방법을 찾고 있다면'Format' 이벤트에 의존 할 수 있습니다. –

답변

1

을 사용하고

. 대신 Format 이벤트를 CheckedListBox으로 처리 할 수 ​​있습니다. 이렇게하면 각 요소에 대한 맞춤 표시 값을 제공 할 수 있습니다.

형식 이벤트는 ListControl의 각 보이는 항목이 서식 지정되기 전에 발생합니다. 이 이벤트를 처리하면 문자열이 Value 속성 ListControlConvertEventArgs을 통해이 목록 항목에 대해 표시됩니다.

이벤트의 이벤트 인수는, 당신은 여기에 몇 가지 속성을 혼합하고 e.Value에 결과를 할당 할 수 있도록 항목 뒤의 객체 인 ListItem 속성이 포함되어 있습니다. 예를 들어

, 당신이 당신의 checkedListBox1List<Product>을 보이고있다 가정하면, 우리는 모양을 간단하게 이런 식으로 사용자 정의 할 수 있습니다 : 체크 박스가있는 다중 열 목록 컨트롤보기 = 세부 사항 및 체크 박스와의 ListView입니다

private void checkedListBox1_Format(object sender, ListControlConvertEventArgs e) 
{ 
    var p = (Product)e.ListItem; 
    e.Value = string.Format("Name: {0}, Price: {1}", p.Name, p.Price); 
} 
+0

고맙습니다, 오랫동안 이것을 찾고있었습니다! –

+0

당신은 환영합니다 :) –