当前位置: 首页 > 编程语言 > C#

如何遍历treeView控件的所有节点,C#分享

时间:2023-04-10 15:57:25 C#

如何遍历treeView控件的所有节点。C#我正在选择表单的所有控件如果控件是Treeview,我将遍历它们拥有的所有节点我需要类似的东西:(这是我的代码)foreach(PanelSM.Controls中的控件c){if(c是TreeView){TreeNodeCollectionmyNodes=c.Nodes;//<<<<<这里有一个错误foreach(TreeNodeninmyNodes){Stringtext=rm.GetString(n.Name);//还有更多的东西//...//...//...}}//...}有什么想法吗?谢谢你的错误是c实际上是一个Control类型的变量,它没有Nodes成员。您将需要它来将其转换为TreeView类型。您可以做以下两件事之一:if(cisTreeView){TreeNodeCollectionmyNodes=((TreeView)c).Nodes;//或TreeViewtv=casTreeView;if(tv!=null){TreeNodeCollectionmyNodes=tv.Nodes;...}你需要使用递归。IEnumerableCollect(TreeNodeCollectionnodes){foreach(TreeNodenodeinnodes){yieldreturnnode;foreach(varchildinCollect(node.Nodes))yieldreturnchild;然后在你的方法中你可以用foreach(varnodeinCollect(tree.Nodes)){//你会在这里看到每个子节点}很简单:voidTraverseTree(TreeNodeCollectionnodes){foreach(varchildin节点){DoSomethingWithNode(孩子);遍历树(子节点);}}并调用它:TraverseTree(MyTreeView.Nodes);我更喜欢简单,这是我的简单解决方案:protectedvoidTraverseNodes(TreeNodeCollectionnodes,stringaction,intmaxDepth=2){foreach(TreeNodenodeinnodes){if(node.ChildNodes.Count>0&&node.Depth我决定包括“最大深度”作为奖励,所以享受它吧。这样称呼它:TraverseNodes(this.Activities.Nodes,"");与这里发布的一些示例不同,我实际测试了这个(哎哟!我能听到他们说).试试这个foreach(TreeNodetintvMenu.Nodes){for(intiParent=0;iParentbuiltinDarren在最佳答案之上,您可以结合递归和类扩展。在命名空间的某处声明:foreach(TreeNodechildinn.Nodes.All())yieldreturnchild;}}}注意方法的第一个参数之前的“this”。然后,你就可以在所有树视图中使用这个新方法了:以上是C#学习教程:如何遍历treeView控件的所有节点。C#分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注---foreach(TreeNodeninmyTreeview.Nodes.All())...本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: