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

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

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>来创建自己的实现。这是一篇文章解释了如何添加过滤器功能。您还可以在Google上找到SortableBindingList的各种实现。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top