1

我在表单中添加了一个树视图。我想捕获复选框的值,无论是否选中。

另外我正在尝试获取节点数。树中有四个节点,

Dim nodes As TreeNodeCollection = TreeView1.Nodes
    MsgBox(nodes.Count)

给出 1。

谢谢

4

1 回答 1

1

...这可能不是最好的方法,但它有效...

该函数如下所示:

Function GetAllCheckedNodes(ByVal tv As TreeView, Optional ByRef tn As TreeNode = Nothing) As List(Of TreeNode)
    Dim RetVal As New List(Of TreeNode)


    If tn Is Nothing Then
        For Each nd In tv.Nodes
            RetVal.AddRange(GetAllCheckedNodes(tv, nd))
        Next
    Else

        If tn.Checked Then RetVal.Add(tn)

        For Each nd In tn.Nodes
            RetVal.AddRange(GetAllCheckedNodes(tv, nd))
        Next
    End If

    Return RetVal
End Function

你使用它的代码看起来像:

    Dim MyList As List(Of TreeNode) = GetAllCheckedNodes(tvAccounts)

或者

    Dim MyList As List(Of TreeNode) = GetAllCheckedNodes(tvAccounts, nd)

树视图中的特定节点在哪里nd,您希望在其中获取所有已检查的子节点。

希望这会有所帮助并且有意义。

于 2013-01-07T17:21:33.513 回答