我正在开发一个具有树视图控件的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
这一定很简单,但我正在试图弄清楚如何弄清楚我的大脑,所以我很欣赏这里的一些见解。
谢谢!
答案 0 :(得分:6)
要在TreeView
中设置所选节点,请致电TreeView.SelectedNode至您要选择的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
然后它应该选择你刚刚创建的节点。
你的第二个例子只需要添加一行:
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进行测试,所以如果您有任何问题请告诉我。