Hallo zusammen,
mit folgendem Code verschiebe ich die Nodes:
und damit will ich mir die Posiziondes markierten verschobenen Node sofort anzeigen lassen:
Beim nach oben Verschieben funktioniert das auch immer, aber beim nach unten verschieben nicht immer zuverlässig (bei vielen Nodes in der Liste)
Ohne
TreeView1.SelectedNode = TreeView1.GetNodeAt(TreeView1.PointToClient(Control.MousePosition))
im NodeMoveDown wird mir die aktuelle Position gar nicht angezeigt
was mache ich falsch ,wo ich was ändern?
vielen Dank für Eure Hilfe und Vorschläge...
Gruß Majachen
mit folgendem Code verschiebe ich die Nodes:
VB.NET-Quellcode
- Private Sub NodeMoveUp()
- With TreeView1
- Dim hNode As TreeNode = .SelectedNode
- If Not (hNode Is Nothing) Then
- Dim PreviewNode As TreeNode = hNode.PrevNode
- If Not (PreviewNode Is Nothing) Then
- .Nodes.Remove(hNode)
- If Not (PreviewNode.Parent Is Nothing) Then
- PreviewNode.Parent.Nodes.Insert(PreviewNode.Index, hNode)
- Else
- .Nodes.Insert(PreviewNode.Index, hNode)
- End If
- .SelectedNode = hNode
- .Focus()
- Else
- .Focus()
- End If
- End If
- End With
- End Sub
- Private Sub NodeMoveDown()
- With TreeView1
- Dim hNode As TreeNode = .SelectedNode
- If Not (hNode Is Nothing) Then
- Dim DownNode As TreeNode = hNode.NextNode
- If Not (DownNode Is Nothing) Then
- .Nodes.Remove(DownNode)
- If Not (hNode.Parent Is Nothing) Then
- hNode.Parent.Nodes.Insert(hNode.Index, DownNode)
- Else
- .Nodes.Insert(hNode.Index, DownNode)
- End If
- TreeView1.SelectedNode = TreeView1.GetNodeAt(TreeView1.PointToClient(Control.MousePosition))
- .SelectedNode = hNode
- .Focus()
- Else
- .Focus()
- End If
- End If
- End With
- End Sub
und damit will ich mir die Posiziondes markierten verschobenen Node sofort anzeigen lassen:
VB.NET-Quellcode
- Private Sub treeView1_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterSelect
- If (e.Node.Parent IsNot Nothing) Then
- If (e.Node.Parent.GetType() Is GetType(TreeNode)) Then
- Me.Text = "HauptknotenName : " + e.Node.Parent.Text + ControlChars.Cr + _
- "HauptknotenIndex: " + e.Node.Parent.Index.ToString() + ControlChars.Cr + " " + _
- "UnterknotenIndex: " + e.Node.Index.ToString()
- End If
- Else
- Me.Text = "Hauptknoten markiert" + " " + e.Node.Index.ToString
- End If
- End Sub
Beim nach oben Verschieben funktioniert das auch immer, aber beim nach unten verschieben nicht immer zuverlässig (bei vielen Nodes in der Liste)
Ohne
TreeView1.SelectedNode = TreeView1.GetNodeAt(TreeView1.PointToClient(Control.MousePosition))
im NodeMoveDown wird mir die aktuelle Position gar nicht angezeigt
was mache ich falsch ,wo ich was ändern?
vielen Dank für Eure Hilfe und Vorschläge...
Gruß Majachen