ユーザーがテキストボックスに特定の番号を入力した後、子ノードを削除/無効にしたい。次のコードに何か問題があることは知っていますが、それを理解することはできません(私は初心者です)。
Dim k As Integer
k = Val(TextBox1.Text)
For i = k + 1 To 4
TreeView1.Nodes(1).Nodes("Node" & i).Remove()
Next
どんな助けでも本当にありがたいです。
乾杯。
どのようなエラーが発生しているのか、または TreeView1 Node 構造が何なのか (複数のルート ノードがあるかどうかに関係なく) を知らずに、TreeNodeCollectionインデックスがゼロ ベースであり、TreeView1.Nodes(0)
.
上記のリンクから:
TreeNode オブジェクトを特定の場所に割り当てたり、TreeNodeCollection から取得したりするには、特定のインデックス値を使用してコレクション オブジェクトを参照できます。TreeNodeCollection のインデックス値は、0 から始まるインデックスです。
以下のコードは、次のノード構造で機能します。
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
注意点として、あなたが何を達成しようとしているのか正確にはわかりませんが、これらのサブルーチンがあなたを近づけることを願っています. 1 つ目はTreeview
、ノード構造を作成してから、新しいノードをクリアしTreeView
て追加することにより、オリジナルを再作成することです。2 番目のサブ ルーチンは、TextBox からの番号を使用し、作成されたノードが重複するかどうかを確認し、そうでない場合はそれを TreeView に追加します。3 番目のサブルーチンは、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