从树视图(VB.NET)中删除/禁用子节点的子节点(此代码有什么问题?)

时间:2012-07-24 02:09:25

标签: vb.net treeview treenode

我希望在用户在文本框中输入特定数字后删除/禁用子节点。 我知道下面的代码有问题,但我无法弄明白(我是初学者)。

Dim k As Integer
k = Val(TextBox1.Text)
For i = k + 1 To 4
TreeView1.Nodes(1).Nodes("Node" & i).Remove()
Next

任何帮助都将非常感激。

干杯。

2 个答案:

答案 0 :(得分:1)

不知道你得到了什么错误,或者你的TreeView1节点结构是什么(无论你是否有多个根节点。我假设你忘记了TreeNodeCollection索引是零基础的,应该正在使用TreeView1.Nodes(0)

从上面链接:

  

要将TreeNode对象分配给特定位置,或者要从TreeNodeCollection中检索它们,可以使用特定索引值引用集合对象。 TreeNodeCollection的索引值是从零开始的索引。

以下代码适用于我的节点结构:

enter image description here

Dim k As Integer
If Integer.TryParse(TextBox1.Text, k) Then 'Checking if conversion is valid before trying to use 
    For i = k + 1 To 4
        TreeView1.Nodes(0).Nodes("Node" & i).Remove() 'Using Nodes(0) for root node.
    Next
End If

作为一个警告,我不确定你到底想要完成什么,但我希望这些Sub Routines会让你接近。第一个是通过创建节点结构然后清除Treeview并添加新节点来重新创建原始TreeView。  第二个Sub Routine使用TextBox中的一个数字,检查创建的Node是否会重复,如果没有,它会将它添加到TreeView。第三个Sub Routine是找到最后一个现有节点,根据TextBox输入的数量添加新节点。

Private Sub ResetNodes()
    Dim root As TreeNode

    root = New TreeNode("Node0")
    root.Nodes.Add("Node1")
    root.Nodes.Add("Node2")
    root.Nodes.Add("Node3")
    root.Nodes.Add("Node4")

    TreeView1.Nodes.Clear()
    TreeView1.Nodes.Add(root)
End Sub

Private Sub AddNodes()
    Dim k As Integer
    Dim duplicate As Boolean
    If Integer.TryParse(TextBox2.Text, k) Then
        For i = 1 To k
            For Each node As TreeNode In TreeView1.Nodes(0).Nodes
                If node.Text = "Node" & i Then
                    duplicate = True
                    Exit For
                End If
                duplicate = False
            Next
            If Not duplicate Then TreeView1.Nodes(0).Nodes.Add("Node" & i)
        Next
    End If
End Sub

Private Sub AddToExistingNodes()
    Dim k As Integer
    Dim lowIndex As Integer
    Dim highIndex As Integer

    lowIndex = TreeView1.Nodes(0).Nodes.Count + 1

    If Integer.TryParse(TextBox2.Text, k) Then
        highIndex = lowIndex + k
        For i = lowIndex To highIndex
            TreeView1.Nodes(0).Nodes.Add("Node" & i)
        Next
    End If
End Sub

答案 1 :(得分:0)

如果您愿意,可以搜索并删除

Private Sub Delete_Sub_TreeNod()

For Each tn As TreeNode In TreeView1.Nodes

            For Each tn2 As TreeNode In tn.Nodes
                If tn2.Text = "Some Value" Then
                    tn2.Remove()
                End If

            Next
        Next
    End Sub