我有一个名为listView1的列表视图,其中包含计算机ID和它们的一些信息。所以我想做的是,我有一个名为filterbox的文本框,当我输入内容时,它将进行过滤,这很好用。我的问题是它只查找第一列而不是其他列。例如:
PCNAME USER MODEL
AAAA JOHN DELL
BBBB MIKE TOSHIBA
CCCC ASH MONSTER
当我输入BB时,它只获取第二行并且运行良好,但如果我输入DELL,则什么也没有。
private void filterbox_TextChanged(object sender, EventArgs e)
{
if (filterbox.Text != "")
{
for (int i = listView1.Items.Count - 1; i >= 0; i--)
{
var item = listView1.Items[i];
if (item.Text.ToLower().Contains(filterbox.Text.ToLower()))
{
item.BackColor = SystemColors.Highlight;
item.ForeColor = SystemColors.HighlightText;
}
else
{
listView1.Items.Remove(item);
}
}
if (listView1.SelectedItems.Count == 1)
{
listView1.Focus();
}
}
}
for (int i ..
,你可以直接使用listView1.Items.Where
进行筛选。而且不需要移除项目,只需清空/刷新ListView即可。 - undefinedItems.Where(i=> i.Any(sub=> sub.SubItems )
- undefinedOfType<ListViewItem>()
。我的手头上没有IDE,但是应该像这样ListView.remove(datasource.Where())
。 - undefined