0

ユーザーがテキストボックスに特定の番号を入力した後、子ノードを削除/無効にしたい。次のコードに何か問題があることは知っていますが、それを理解することはできません(私は初心者です)。

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

どんな助けでも本当にありがたいです。

乾杯。

4

2 に答える 2

1

どのようなエラーが発生しているのか、または 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
于 2012-07-24T04:22:56.273 に答える