0

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

私のリストボックスのデータソースは、次の場所に多数のDTOを含むBindingSourceです。

IList<DisplayDTO>

ListBoxのDisplayMemberで指定されているDTOプロパティでフィルタリングしたいと思います。

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

4

1 に答える 1

3

これはうまくいくはずです:

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また、Googleでのさまざまな実装を見つけることができます。

于 2009-09-14T06:19:42.423 に答える