在树视图中查找父节点的所有已检查节点

时间:2013-08-08 07:24:34

标签: vb.net treeview nodes

我一直在尝试在网上搜索有关子节点的信息,但我似乎找到了所有我想要的东西。

基本上,我的问题是: 我已确定是否在我的treeview控件中检查了父节点。我需要做的是遍历这个父节点的所有子节点,以确定检查子节点,然后将它们加载到数组中。

由于我已经知道父节点,我希望我不必再遍历所有节点。我想循环遍历指定父级的所有子节点。

希望这是有道理的。

我的Treeview看起来与此相似:

Name
  -->Name 1
  -->Name 2
  -->Name 3
  -->Etc
Code
  -->Code 1
  -->Code 2
  -->Code 3
  -->Etc

所以我的例子看起来像这样:

 If trvFilter.Nodes.Item(trvFilter.Nodes.IndexOfKey("Name")).Checked = True Then
             'Loop through Child Nodes of Parent Node (Name)
             'If Child Node is checked, add the name of the Child node to an array
         End If

很抱歉,如果这看起来很简单,但我是vb.net的新手,无法解决如何遍历所选父级的子节点。

提前致谢

2 个答案:

答案 0 :(得分:0)

trvFilter.Nodes是TreeNode的集合,因此您可以使用for-each循环遍历它们

for each tvn as TreeNode in trvFilter.Nodes

 ' do stuff with tvn

next

答案 1 :(得分:0)

我似乎找到了一种方法,可以使用以下代码获取我需要的最终结果:

If trvFilter.Nodes.Item(trvFilter.Nodes.IndexOfKey("Name")).Checked = True Then
            'Loop through Child Nodes of Parent Node (Name)
            For Each cn As TreeNode In trvFilter.Nodes.Item(trvFilter.Nodes.IndexOfKey("Name")).Nodes
                'If Child Node is checked, add the name of the Child node to an array
                If cn.Checked Then
                    StoreRecordArray.Add(cn.Text)
                End If
            Next
        End If

如果有更简单(更整洁)的方法,请随时更新我的​​代码。 感谢