Winform TreeView 查找下一个节点
2016-10-02 09:59
295 查看
转载:http://www.cnblogs.com/Ruiky/archive/2013/02/01/2888674.html
如何调用:
var tn = _Tv.NextNodes().FirstOrDefault(x => Regex.IsMatch(x.Text, "(?i)" + txtKey.Text.Trim()));
if (tn == null)
MessageBox.Show("查找完毕");
else
_Tv.SelectedNode = tn;
如何调用:
var tn = treeView1.Nodes.TreeWhere(x => Regex.IsMatch(x.Text, @"(?i)" + txtKey.Text.Trim()));
分类: C#,WinForm
public static class TreeViewHelper { private static IEnumerable<TreeNode> childNodes(this TreeNode node) { return node.Nodes.Cast<TreeNode>() .SelectMany(x => x.selfAndChildNodes()); } private static IEnumerable<TreeNode> selfAndChildNodes(this TreeNode node) { return new List<TreeNode>() { node } .Union(node.Nodes.Cast<TreeNode>() .SelectMany(x => x.selfAndChildNodes())); } private static IEnumerable<TreeNode> nextNodes(this TreeView tree, TreeNode node) { bool after = false; if (node.Parent == null) return tree.Nodes.Cast<TreeNode>() .Select(x => { bool b = after = after || (node == x); return new { x, b }; }) .Where(x => x.b && x.x != node) .SelectMany(x => new List<TreeNode>() { x.x }.Union(x.x.childNodes())); else return node.Parent.Nodes.Cast<TreeNode>() .Select(x => { bool b = after = after || (node == x); return new { x, b }; }) .Where(x => x.b && x.x != node) .SelectMany(x => new List<TreeNode>() { x.x }.Union(x.x.childNodes())) .Union(tree.nextNodes(node.Parent)); } public static IEnumerable<TreeNode> NextNodes(this TreeView tree, TreeNode node) { if (tree == null || node == null) return new List<TreeNode>(); return node.childNodes().Union(tree.nextNodes(node)); } public static IEnumerable<TreeNode> NextNodes(this TreeView tree) { if (tree == null || tree.SelectedNode == null) return new List<TreeNode>(); return tree.NextNodes(tree.SelectedNode); } }
如何调用:
var tn = _Tv.NextNodes().FirstOrDefault(x => Regex.IsMatch(x.Text, "(?i)" + txtKey.Text.Trim()));
if (tn == null)
MessageBox.Show("查找完毕");
else
_Tv.SelectedNode = tn;
public static IEnumerable<TreeNode> TreeWhere(this TreeNodeCollection tds, Func<TreeNode, bool> Fun) { foreach (TreeNode item in tds) { if (Fun(item)) yield return item; var list = item.Nodes.TreeWhere(Fun); foreach (var item1 in list) yield return item1; } }
如何调用:
var tn = treeView1.Nodes.TreeWhere(x => Regex.IsMatch(x.Text, @"(?i)" + txtKey.Text.Trim()));
分类: C#,WinForm
相关文章推荐
- Winform TreeView 查找下一个节点
- VB.NET中TreeView查找下一个节点
- C# WinForm TreeView改变选中节点颜色,失去焦点时选中节点仍突显。
- WinForm TreeView初始化后不选中任何节点
- 查找TREEVIEW的根节点值
- 如何C#中实现在TreeView查找某一节点
- C#中遍历TreeView并查找和选定节点
- 左孩子右兄弟表示多叉树查找返回下一个节点
- C#中Winform的Treeview节点"正在展开..."的效果
- 用C#在ASP.NET 2.0 的 TreeView 中查找某一节点
- ExtJS+ASP.NET实现异步Tree的节点搜索和查找下一个(FindNext)
- C# WinForm TreeView改变选中节点颜色,失去焦点时选中节点仍突显。
- 查找下一个元素节点(getNextElement函数)
- treeview(winform)里如何用命令指定选中某一个节点,并引发afterselect事件?
- Winform TreeView 节点拖动
- JavaScript_查找指定节点之后的下一个元素节点_getNextElement(node)_JavaScript扩展
- WinForm C# TreeView改变选中节点颜色,失去焦点时选中节点仍突显。
- winform TreeView节点中的CheckBox 禁用
- winform 两个TreeView间拖拽节点
- extjs+s2sh实现异步Tree的节点搜索和查找下一个(FindNext)