6

ツリービュー コントロールを備えた VB.NET 2010 プロジェクトに取り組んでいます。最初に理解しようとしているのは、現在選択されているノードの直後に新しいノードを挿入し、その新しく挿入されたノードを選択されたノードにする方法です。新しいノードを問題なく挿入できますが、それを「選択した」ノードにする方法がわかりません。以下のコメント行は、私がハングアップしている部分です。

Private Sub AddNode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddNode.Click

    If Not treeview1.SelectedNode Is Nothing Then
        treeview1.Nodes.Insert(treeview1.SelectedNode.Index + 1, TextBox1.Text)
        treeview.SelectedNode = treeview1.Nodes.Item(treeview1.SelectedNode.Index + 1) ' <-- I thought this would work, but it doesn't
    End If

End Sub

次に、以下のコードを使用して、選択したノードを (他のノードに対して) 上に移動しています。それは問題なく動作しますが、上記の問題と同様に、移動後にそのノードを「選択された」ノードとして保持する方法がわかりません。

Private Sub NodeUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NodeUp.Click

    Dim CurrentIndex As Integer = treeview1.SelectedNode.Index
    Dim CurrentNode As TreeNode = treeview1.SelectedNode
    treeview1.SelectedNode.Remove()
    treeview1.Nodes.Insert(CurrentIndex - 1, CurrentNode)

End Sub

これは単純でなければなりませんが、その方法を理解しようと頭を悩ませているので、ここで少し洞察をいただければ幸いです。

ありがとう!

4

1 に答える 1

6

選択したノードを設定するには、選択したいノードにTreeView.SelectedNodeTreeView呼び出します。TreeNode

あなたの例に至るまで、それを確立したので:

オーバーロード (整数、文字列) を使用してTreeView.Nodes.Insertを呼び出すと、実際にはTreeNodeオブジェクトが返されます。したがって、サンプルを次のように変更すると

Private Sub AddNode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddNode.Click

    If Not treeview1.SelectedNode Is Nothing Then
        Dim NewNode as TreeNode = treeview1.Nodes.Insert(treeview1.SelectedNode.Index + 1, TextBox1.Text)
        treeview.SelectedNode = NewNode
    End If

End Sub

次に、作成したばかりのノードを選択する必要があります。

2 番目の例では、1 行追加するだけです。

Private Sub NodeUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NodeUp.Click

    Dim CurrentIndex As Integer = treeview1.SelectedNode.Index
    Dim CurrentNode As TreeNode = treeview1.SelectedNode
    treeview1.SelectedNode.Remove()
    treeview1.Nodes.Insert(CurrentIndex - 1, CurrentNode)
    treeview1.SelectedNode = CurrentNode

End Sub

これは、Visual Studio にアクセスしてテストできないため、現時点ではすべてブレイン コンパイラで動作しています。問題がある場合はお知らせください。

于 2013-05-11T23:25:56.370 に答える