过滤Windows窗体应用程序中的列表框

时间:2009-09-14 06:17:13

标签: c# listbox filtering windows-forms-designer

是否可以在Windows窗体应用程序中过滤列表框的内容?

我的ListBox的DataSource是一个包含一堆DTO的BindingSource:

IList<DisplayDTO>

我想过滤ListBox的DisplayMember中指定的DTO属性。

要过滤的文本在单独的文本框中提供。

1 个答案:

答案 0 :(得分: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>来创建自己的实现。这里是an article,解释了如何添加过滤器功能。您还可以在Google上找到SortableBindingList的各种实现。