【发布时间】:2022-01-15 04:52:05
【问题描述】:
我在 C# 平台上有 winform 项目。我有列表视图和文本框,如下图所示。 我想根据用户输入的文本值对列表进行重新排序。
我在这里问之前进行了研究,我通常看到基于将所有单元再次删除并重新添加到列表视图的解决方案。我不想这样做,因为我的列表视图有太多带有图片的项目,因此删除和重新添加项目会导致列表视图工作缓慢。
我想要的是,当用户在文本框中输入字符时,以这个字符开头的项目,把这个项目放在列表的顶部,类似于谷歌搜索系统。
我尝试了下面的代码,但即使我选择了索引 0,这也会将项目发送到列表的末尾。 谢谢。
private void txt_search_TextChanged(object sender, EventArgs e)
{
string text = txt_search.Text;
var item = listView1.FindItemWithText(text);
if (item != null)
{
int index = listView1.Items.IndexOf(item);
if (index > 0)
{
listView1.Items.RemoveAt(index);
listView1.Items.Insert(0, item);
}
}
}
【问题讨论】:
-
考虑在虚拟模式中使用 ListView,以便在要显示大列表时获得更好的性能。由于您可以控制正在显示的数据,因此您将能够执行更好的过滤/排序例程。
-
@Fixations 答案对我有用。感谢您的关注。
标签: c# sorting listview search