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你调用TreeView.SelectedNode中设置选定的节点,TreeNode你想要选择。

现在我们已经确定了这一点,具体到您的示例:

当您使用您拥有的重载 (integer, string)调用TreeView.Nodes.InsertTreeNode时,您实际上会得到一个返回给您的对象。因此,如果您将样本更改为

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

那么它应该选择您刚刚创建的节点。

您的第二个示例只需要添加一行:

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 回答