我想在用户在文本框中输入特定数字后删除/禁用子节点。我知道以下代码有问题,但我无法弄清楚(我是初学者)。
Dim k As Integer
k = Val(TextBox1.Text)
For i = k + 1 To 4
TreeView1.Nodes(1).Nodes("Node" & i).Remove()
Next
任何帮助将不胜感激。
干杯。
在不知道您遇到什么错误或您的 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
如果你喜欢,你可以搜索和删除
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