是否可以在Windows窗体应用程序中过滤列表框的内容?
我的ListBox的DataSource是一个包含一堆DTO的BindingSource:
IList<DisplayDTO>
我想过滤ListBox的DisplayMember中指定的DTO属性。
要过滤的文本在单独的文本框中提供。
答案 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
的各种实现。