【问题标题】:Remove/disable child node of a child node from a treeview (VB.NET) (what is wrong with this code?)从树视图(VB.NET)中删除/禁用子节点的子节点(这段代码有什么问题?)
【发布时间】:2012-07-24 02:09:24
【问题描述】:

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

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

任何帮助将不胜感激。

干杯。

【问题讨论】:

    标签: vb.net treeview treenode


    【解决方案1】:

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

    来自上面的链接:

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

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

    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
    

    作为一个警告,我不确定你想要完成什么,但我希望这些子例程能让你接近。第一个是通过创建节点结构然后清除TreeView 并添加新节点来重新创建原始Treeview。 第二个子例程使用文本框中的数字,检查创建的节点是否是重复的,如果不是,它将添加到 TreeView。第三个子例程是查找最后一个现有节点添加新节点,其数量基于 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
    

    【讨论】:

    • @mrn 我的回答有问题吗?
    • 遇到以下查询,(a) 如何在运行时重置为原始结构? (我可以为此操作添加一个新按钮)和 (b) 是否可以生成与 TextBox1 中输入的数字相等的子节点总数?
    • @mrn。当我使用装有 Visual Studio 的电脑时会添加一些信息
    • 非常感谢。真的很感激。
    • @mrn 我又添加了 3 个示例,我不确定您是要从集合的最后一个节点开始添加 x 个额外节点还是创建包括现有节点在内的总节点数。跨度>
    【解决方案2】:

    如果你喜欢,你可以搜索和删除

    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
    

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      相关资源
      最近更新 更多