vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: TreeView DragDrop Stammknoten 
Autor: Nils Christian
Datum: 26.02.18 21:39

Jetzt habe ich eine Lösung gefunden, die nicht dreckig ist:

    Private Sub Baum_ItemDrag(sender As Object, e As _
      System.Windows.Forms.ItemDragEventArgs) Handles TreeView1.ItemDrag
        'Verschieben bei gedrückter linker Maustaste
        If e.Button = MouseButtons.Left Then
            DoDragDrop(e.Item, DragDropEffects.Move)
            'Kopieren bei gedrückter rechter Maustaste
        ElseIf e.Button = MouseButtons.Right Then
            DoDragDrop(e.Item, DragDropEffects.Copy)
        End If
    End Sub
 
    Private Sub Baum_DragEnter(sender As Object, e As _
      System.Windows.Forms.DragEventArgs) Handles TreeView1.DragEnter
        e.Effect = e.AllowedEffect
    End Sub
 
    Private Sub Baum_DragOver(sender As Object, e As _
      System.Windows.Forms.DragEventArgs) Handles TreeView1.DragOver
 
        'Zielpunkt wird berechnet
        Dim Zielpunkt As Point = TreeView1.PointToClient(New Point(e.X, e.Y))
 
        'Zielpunkt wird selektiert
        TreeView1.SelectedNode = TreeView1.GetNodeAt(Zielpunkt)
 
 
    End Sub
 
    Private Sub Baum_DragDrop(sender As Object, e As _
      System.Windows.Forms.DragEventArgs) Handles TreeView1.DragDrop
 
        'Zielpunkt wird berechnet
        Dim Zielpunkt As Point = TreeView1.PointToClient(New Point(e.X, e.Y))
 
        'Der Zielknoten wird anhand des Zielpunktes bestimmt
        Dim Zielknoten As TreeNode = TreeView1.GetNodeAt(Zielpunkt)
 
        'Damit wird das ziehen in die Leere verhindert
        If Zielknoten Is Nothing Then Exit Sub
 
        'Nur das ziehen zulassen wenn es in keinem Zettel eingefügt werden soll
        If Zielknoten.Tag = "Zettelkasten" Or Zielknoten.Tag = "Stammordner" _
          Then
 
            'Der Gezogene Knoten
            Dim GezogenerKnoten As TreeNode = CType(e.Data.GetData(GetType( _
              TreeNode)), TreeNode)
 
            'Es wird verhindert das der gezognene Knoten nicht der Elternknoten 
            ' ist
            If Not GezogenerKnoten.Equals(Zielknoten) AndAlso Not _
              Elternknoten_Suche(GezogenerKnoten, Zielknoten) Then
 
                If e.Effect = DragDropEffects.Move Then
                    'Wenn Knoten ausgeschnitten wird, wird er gelöscht ...
                    GezogenerKnoten.Remove()
 
                    '... und wieder eingefügt ...
                    Zielknoten.Nodes.Add(GezogenerKnoten)
 
                    '... oder wird nur kopiert ...
                ElseIf e.Effect = DragDropEffects.Copy Then
                    '... und dann eingefügt
                    Zielknoten.Nodes.Add(CType(GezogenerKnoten.Clone(), _
                      TreeNode))
                End If
                'Zielknoten wird expandiert
                Zielknoten.Expand()
 
            End If
 
        End If
 
    End Sub
 
    Private Function Elternknoten_Suche(ByVal Knoten1 As TreeNode, ByVal _
      Knoten2 As TreeNode) As Boolean
 
        'Ermittelt den Elternknoten der 2.Knotens
        If Knoten2.Parent Is Nothing Then
            Return False
        End If
        If Knoten2.Parent.Equals(Knoten1) Then
            Return True
        End If
 
        Return Elternknoten_Suche(Knoten1, Knoten2.Parent)
 
    End Function

Ich arbeite mit:
Windows 10 Professional 64-bit * Visual Basic 2010 Express

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
TreeView DragDrop Stammknoten968Nils Christian08.02.18 12:31
Re: TreeView DragDrop Stammknoten512Franki09.02.18 03:45
Re: TreeView DragDrop Stammknoten499Nils Christian09.02.18 09:29
Re: TreeView DragDrop Stammknoten494Franki10.02.18 03:18
Re: TreeView DragDrop Stammknoten541Nils Christian14.02.18 14:28
Re: TreeView DragDrop Stammknoten457Franki15.02.18 01:12
Re: TreeView DragDrop Stammknoten437Nils Christian15.02.18 13:03
Re: TreeView DragDrop Stammknoten430Nils Christian15.02.18 13:43
Re: TreeView DragDrop Stammknoten516Nils Christian26.02.18 21:39

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel