如下所示:
TreeNode[] treeNodes = treeView.Nodes.Find(searchString, true);
但我希望它在text
字段而不是name
字段中进行搜索。
发布于 2012-09-12 20:34:56
我不知道有什么内置的方法,但你可以使用LINQ
TreeNode[] treeNodes = treeView.Nodes
.Cast<TreeNode>()
.Where(r => r.Text == "yourText")
.ToArray();
发布于 2012-09-12 20:45:15
要搜索所有树节点(不仅仅是直接子节点),可以使用下面的扩展方法
var nodes = treeView1.FlattenTree()
.Where(n => n.Text == "sometext")
.ToList();
--
public static class SOExtension
{
public static IEnumerable<TreeNode> FlattenTree(this TreeView tv)
{
return FlattenTree(tv.Nodes);
}
public static IEnumerable<TreeNode> FlattenTree(this TreeNodeCollection coll)
{
return coll.Cast<TreeNode>()
.Concat(coll.Cast<TreeNode>()
.SelectMany(x => FlattenTree(x.Nodes)));
}
}
发布于 2012-09-12 20:42:12
如果我理解正确(您上一个问题非常令人困惑),您可以自己编写一个find方法,如下所示
public static TreeNode[] Find(this TreeNode motherNode, string findNodeText)
{
List<TreeNode> nodeList = new List<TreeNode>();
foreach (TreeNode childNode in motherNode.Nodes)
if (childNode.Text.Equals(findNodeText, StringComparison.CurrentCulture))
nodeList.Add(childNode);
return nodeList.ToArray<TreeNode>();
}
这个方法可以像这样使用。
TreeView myTreeView = new TreeView();
foreach (TreeNode node in myTreeView.Nodes)
{
TreeNode[] childNodes = node.Find("Text");
// Do something...
}
我希望这能帮到你。
https://stackoverflow.com/questions/12388249
复制相似问题