Hallo Franki,
ich sende mal den Code.
Mir ist nur nicht ganz klar in welchem Teil des Codes ich überprüfen kann was der Stammordner ist.
Private Sub Baum_DragDrop(sender As Object, e As _
System.Windows.Forms.DragEventArgs) Handles Baum.DragDrop
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False _
Then Exit Sub
Dim gewählterBaum As TreeView = CType(sender, TreeView)
Dim Knoten As TreeNode = CType(e.Data.GetData( _
"System.Windows.Forms.TreeNode"), TreeNode)
Dim Zielknoten As TreeNode = gewählterBaum.SelectedNode
'Nur wenn der Zielknoten ein Zettelkasten oder der Stammordner ist kann
' verschoben werden
If Zielknoten.Tag = "Zettelkasten" Or Zielknoten.Tag = "Stammordner" _
Then
Knoten.Remove()
If Zielknoten Is Nothing Then
gewählterBaum.Nodes.Add(Knoten)
Else
Zielknoten.Nodes.Add(Knoten)
End If
Knoten.EnsureVisible()
gewählterBaum.SelectedNode = Knoten
End If
End Sub
Private Sub Baum_DragEnter(sender As Object, e As _
System.Windows.Forms.DragEventArgs) Handles Baum.DragEnter
' Sehen, ob ein TreeNode gezogen wird
If e.Data.GetDataPresent(" System.Windows.Forms.TreeNode", True) Then
' TreeNode gefunden erlaubt Bewegungseffekt
e.Effect = DragDropEffects.Move
Else
' Kein TreeNode gefunden, Bewegung verhindern
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub Baum_DragOver(sender As Object, e As _
System.Windows.Forms.DragEventArgs) Handles Baum.DragOver
'Wenn kein Knoten gezogen wird, dann raus aus der Sub
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False _
Then Exit Sub
Dim pt As Point = CType(sender, TreeView).PointToClient(New Point(e.X, _
e.Y))
Dim Zielknoten As TreeNode = Baum.GetNodeAt(pt)
If Zielknoten.Tag = "Zettelkasten" Or Zielknoten.Tag = "Stammordner" _
Then
If Not (Baum.SelectedNode Is Zielknoten) Then
Baum.SelectedNode = Zielknoten
Dim Knoten As TreeNode = CType(e.Data.GetData( _
"System.Windows.Forms.TreeNode"), TreeNode)
Do Until Zielknoten Is Nothing
If Zielknoten Is Knoten Then
e.Effect = DragDropEffects.None
Exit Sub
End If
Zielknoten = Zielknoten.Parent
Loop
End If
'Currently selected node is a suitable target
e.Effect = DragDropEffects.Move
End If
End Sub
Private Sub Baum_ItemDrag(sender As Object, e As _
System.Windows.Forms.ItemDragEventArgs) Handles Baum.ItemDrag
If Baum.SelectedNode.Tag = "Stammordner" Then
Exit Sub
End If
DoDragDrop(e.Item, DragDropEffects.Move)
End Sub Ich arbeite mit:
Windows 10 Professional 64-bit * Visual Basic 2010 Express |