TreeView Drag & Drop

  • VB.NET
  • .NET 4.0

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von michl75.

    TreeView Drag & Drop

    Versuche gerade über Drag & Drop Einträge via rechte Maustaste zu verschieben...

    Mein Code soweit:

    VB.NET-Quellcode

    1. Private _neueParendId As Integer
    2. Private Sub Bauteile_KategorieTreeView_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles _
    3. Bauteile_KategorieTreeView.MouseDown
    4. If e.Button = Windows.Forms.MouseButtons.Left Then Exit Sub
    5. If _selectNode = Nothing Then Exit Sub
    6. Bauteile_KategorieTreeView.DoDragDrop(_selectNode.ToString, DragDropEffects.Copy)
    7. End Sub
    8. Private Sub Bauteile_KategorieTreeView_DragEnter(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles _
    9. Bauteile_KategorieTreeView.DragEnter
    10. If (e.Data.GetDataPresent(DataFormats.Text)) Then
    11. e.Effect = DragDropEffects.Copy
    12. Else
    13. e.Effect = DragDropEffects.None
    14. End If
    15. End Sub
    16. Private Sub Bauteile_KategorieTreeView_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles _
    17. Bauteile_KategorieTreeView.DragDrop
    18. MsgBox(CInt(e.Data.GetData(DataFormats.Text)) & " - " & _neueParendId) ' zum Testen
    19. End Sub


    Nun weis ich aber nicht wie ich dem Code beibringen kann, wie er die ID (Tag) von dem Treeview-Eintrag auslesen kann, wo der Zeiger grad drübersteht und die Maustaste losgelassen wird.

    Könnt's ma da mal kurz weiterhelfen ? Wäre super ... DANKE!

    Michl
    1. Warum immer das Falsche ausschließen anstatt das Richtige zu nutzen ? Zeile 5 --> If e.Button = Windows.Forms.MouseButtons.Right Then Exit Sub, sonst könnte ich auch mit dem Mausrad DragnDrop durchführen.
    2. Wahrschinelich verstehe ich dich falsch, aber wenn du _selectNode hast, kommst du doch auch an dessen Tag ran ? oO
    Glaub du hast mich falsch verstanden...

    Erklärs mal...

    Habe ein Treeview, wenn ich bei Bauteile_KategorieTreeView.MouseDown den Treeview-Item ziehe, wird die ID = Tag übergeben.

    Wenn ich auf deiner anderen Position (anderer Treeview-Eintrag wieder loslasse - bei Bauteile_KategorieTreeView.MouseUp soll er mir von dem Treeview-Item die Id zurückgeben, auf der der Zeiger (Mouse) gerade steht.

    mal ein Versuch von mir:

    VB.NET-Quellcode

    1. Private Sub Bauteile_KategorieTreeView_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles _
    2. Bauteile_KategorieTreeView.MouseUp
    3. Dim p As Point = New Point(e.X, e.Y)
    4. Dim node As TreeNode = Bauteile_KategorieTreeView.GetNodeAt(p)
    5. _neueParendId = CInt(node.Tag)
    6. End Sub


    Funktioniert aber so nicht, weil er mir in _neueParendId immer die gleiche Id einsetzt wie unter Bauteile_KategorieTreeView.MouseDown