首页  编辑  

最简单优雅的方式在列表中循环搜索匹配的ListView节点

Tags: /C#/界面处理/ListView_TreeView/   Date Created:
The best, simplest, graceful way to find nodes(next, next) in a ListView
假设有个ListView,有许多节点,有一个文本框,如何按回车,不断搜索匹配的节点?
最简单优雅高效的方法是什么?

在文本框的KeyPress事件当中,编写如下代码即可:
using System.Linq;

private ListViewItem LastItem;

private void teFind_KeyPress(object sender, KeyPressEventArgs e)
{
	if (e.KeyChar != 13 || lvDevice.Items.Count == 0) return;

	if (LastItem != null) LastItem.BackColor = Color.White;
	int skip = LastItem == null ? 0 : LastItem.Index + 1;
	LastItem = lvDevice.Items.Cast<ListViewItem>().Skip(skip).FirstOrDefault(x => x.Text.Contains(teFind.Text));
	if (LastItem != null)
	{
		LastItem.BackColor = Color.Yellow;
		LastItem.Focused = true;
		LastItem.EnsureVisible();
	}
}
上面的代码,可以简单快速去不断搜索到匹配的节点,而且可以不断循环查找!