2009-09-14 7 views
0

Windowsフォームアプリケーションでリストボックスの内容をフィルタリングすることはできますか?Windowsフォームアプリケーションのリストボックスをフィルタリングする

私のリストボックスのデータソースは、中のDTOの束を含むのBindingSourceです:

IList<DisplayDTO> 

私は、リストボックスのDisplayMemberで指定されたDTOのプロパティでフィルタしたいです。

フィルタリング対象のテキストは、別のテキストボックスで提供されます。

答えて

3

これは動作するはずです:

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

EDITは:基礎となるデータソース(bindingSource.DataSource)がIBindingListViewを実装している場合、これはのみ動作します。 FCLでは、DataViewクラスのみがこのインタフェースを実装しています。

BindingList<T>から継承して独自の実装を作成できます。フィルタ機能を追加する方法については、an articleをご覧ください。 GoogleにはSortableBindingListのさまざまな実装もあります。

+0

私はいくつかのバリエーションを使って、提案したことを試しましたが、まだそれを動作させることができませんでした。私はそれがBindingSource内で使用されているコンテナと何か関係があると読んでいます。 BindingListに変更しても何の助けにもなりませんでした。 –

+0

残念ながら、.NETフレームワークで提供されている 'BindingList '実装では、ソートとフィルタリングはサポートされていません...フィルタ機能を追加する方法については、http://www.nablasoft.com/alkampfer/indexを参照してください。 php/2008/11/22/extend-bindinglist-with-filter-functionality /にあります。 –

+0

ああ、元気いっぱいです:) –

関連する問題