문제

Windows 양식 응용 프로그램에서 ListBox의 내용을 필터링 할 수 있습니까?

내 Listbox의 데이터 소스는 다음에 많은 DTO를 포함하는 바인딩 소스입니다.

IList<DisplayDTO>

Listbox의 DisplayMember에 지정된 DTO 속성을 필터링하고 싶습니다.

필터링 할 텍스트는 별도의 텍스트 상자에 제공됩니다.

도움이 되었습니까?

해결책

이것은 작동해야합니다 :

private void textBox_TextChanged(object sender, EventArgs e)
{
    bindingSource.Filter = string.Format("[{0}] LIKE '%{1}%'",
                                         listBox.DisplayMember,
                                         textBox.Text.Replace("'", "''"));
}

편집 : 기본 데이터 소스 인 경우에만 작동합니다 (bindingSource.DataSource) 구현 IBindingListView. FCL에서만 DataView 클래스는이 인터페이스를 구현합니다.

상속을 통해 자신의 구현을 만들 수 있습니다 BindingList<T>. 여기에 있습니다 기사 필터 기능을 추가하는 방법을 설명합니다. 다양한 구현을 찾을 수도 있습니다 SortableBindingList 구글에서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top