C# 如何使用C上的textbox删除/过滤listbox上的数据
我需要将一个搜索框添加到一个列表框中,该列表框包含从SQL提取的数据-我不确定如何添加,因为它不是我的代码。我只需要添加搜索功能。列表框包含用户名和姓氏。因此,我所要做的就是使用列表框名称 到目前为止,我可以搜索用户名,但它只显示最近的搜索-我希望代码过滤掉包含我在搜索框中键入内容的所有内容:C# 如何使用C上的textbox删除/过滤listbox上的数据,c#,winforms,search,filter,listbox,C#,Winforms,Search,Filter,Listbox,我需要将一个搜索框添加到一个列表框中,该列表框包含从SQL提取的数据-我不确定如何添加,因为它不是我的代码。我只需要添加搜索功能。列表框包含用户名和姓氏。因此,我所要做的就是使用列表框名称 到目前为止,我可以搜索用户名,但它只显示最近的搜索-我希望代码过滤掉包含我在搜索框中键入内容的所有内容: private void btnSearch_Click(object sender, EventArgs e) { this.lbUsers.SelectedItems.
private void btnSearch_Click(object sender, EventArgs e)
{
this.lbUsers.SelectedItems.Clear();
for (int s = this.lbUsers.Items.Count - 1; s >= 0; s--)
{
if (this.lbUsers.Items[s].ToString().ToLower().Contains(this.tbSearch.Text.ToLower()))
{
this.lbUsers.SetSelected(s, true);
}
}
}
我也不希望所有的用户都显示出来——只显示那些与搜索框的条件相关的用户 您必须手动执行此操作: 在列表中保存所有用户 过滤包含文本框中文本的列表 将结果添加到列表框中 这是一个简单的例子:
List<User> users = new List<User>();
private void txtFilter_TextChanged(object sender, EventArgs e)
{
List<User> displayList = this.users;
if(this.txtFilter.Text != string.Empty)
{
displayList = this.users.Select(u => u.Name == this.txtFilter.Text);
}
this.lbUsers.Items.Clear();
this.lbUsers.Items.AddRange(displayList);
}
我认为最好的方法是通过可见性。这样,您就不必一直创建/处理列表框项 例如,下面的代码将执行您想要的操作:
foreach (var item in lbUsers.Items)
{
if (item.ToString().Contains(this.tbSearch.Text))
{
item.Visible = true;
}
else
{
item.Visible = false;
}
}
下面是一些您可以查看的资源—而且,当搜索执行时,会弹出一个窗口,其中的Object未设置为objecct的实例。我知道他的代码是从SQL中提取数据的,我想他是使用LINQ查询提取数据的。我是一个新手,只是想寻求一些帮助,只是修改查询不是更容易吗?添加一个类似%searchstring%的内容吗?我用过这个,但现在没有得到任何结果。我想能够键入甚至只是一个和所有的名称以一开始需要显示。目前还没有任何东西。@JudithJoubert此代码原则上是有效的。您必须调试并查看发生了什么。