DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Till Groos Artikel Drucken
        
Implementieren von Drag and Drop in Windows Forms

Drag and Drop macht die Bedienung von Benutzeroberflächen sehr viel komfortabler. Dieser Artikel soll zeigen, was man alles tun muss, um Drag and Drop - Funktionaltäten zu implementieren.

Damit ein Control ein Drop akzeptiert, muss man die 'AllowDrop' - Eigenschaft des Controls auf true setzen.
Man startet einen Drag and Drop Vorgang mit der DoDragDrop-Methode, die jedes Control von Control erbt. Dieser Methode übergibt man den Inhalt des Drag and Drop Events und von welchem Typ das Drag and Drop sein kann. Der Inhalt kann ein beliebiges Objekt sein, der Typ oder die Typen müssen aus der DragDropEffects-Enumeration sein und können mit or verknüpft werden.
Im DragEnter-Event des Zielcontrols richtet man jetzt die Wirkung ein, die das Droppen anrichten soll. Hier kann über die Keystate-Eigenschaft des DragEventArgs überprüft werden, ob ggf. Steuertasten gedrückt sind und dem entsprechend der Effekt des Drag and Drop eingestellt werden. Hier sollte auch überprüft werden, ob der Inhalt des Events zum Control passt.
Der eigentliche Drop passiert im DragDrop-Event. Hier werden die auszuführenden aktionen implementiert, abhängig vom gewählten Effekt.

Im folgenden kleinen Beispiel kann der Text aus Textbox1 entweder in Textbox2 kopiert oder verschoben werden, abhängig davon, ob die Shift-Taste oder die Ctrl-Taste gedrückt ist:

' Initialisieren des Drag and Drop - Vorgangs beim Drücken der linken Maustaste
' könnte aber auch für jedes andere Event gemacht werden
Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDo
    ' Aktivieren des Drag & Drop Vorgangs mit der DoDragDrop-Methode
    ' erster Parameter gibt den Inhalt an (kann beliebigs Objekt sein)
    ' zweiter Parameter gibt die erlaubten Effekte an, wie kopieren oder verschieben
    Me.TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy Or DragDropEffects.Move)
End Sub

' Wenn die Maus über der TextBox2 ist, konfigurieren wir das DragDrop-Event
Private Sub TextBox2_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragOver
    'abfragen, ob der Inhalt des DragDropEvents von Typ 'Text' ist (was anderes kann die TextBox ja nicht)
    If (e.Data.GetDataPresent(GetType(String))) Then
        ' abfragen, welche Taste gedrückt wird (4== shift) (8==Ctrl)
        If (e.KeyState And 4) = 4 Then
            ' shift wird gedrückt, dann soll verschoben werden
            e.Effect = DragDropEffects.Move
            ' mein Cursor für's verschieben
            Me.Cursor = movecur
        ElseIf (e.KeyState And 8) = 8 Then
            ' Ctrl wird gedrückt, dann soll kopiert werden
            e.Effect = DragDropEffects.Copy
            ' mein Cursor für's kopieren
            Me.Cursor = copycur
        End If
    Else
        ' falls der Inhalt kein Text ist, soll nichts passieren
        e.Effect = DragDropEffects.None
    End If
End Sub

' der Drop-Vorgang für die Textbox2
Private Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragDrop
    ' beim Verschieben...
    If e.Effect = DragDropEffects.Move Then
        ' ...weisen wir der Textbox2 den Inhalt des EventArgs zu ...
        TextBox2.Text = e.Data.GetData(DataFormats.Text).ToString
        ' ... und löschen den Text der Textbox1
        TextBox1.Text = ""
        ' beim Kopieren ...
    ElseIf e.Effect = DragDropEffects.Copy Then
        ' ...weisen wir nur der Textbox2 den Inahlt des EventArgs zu
        TextBox2.Text = e.Data.GetData(DataFormats.Text).ToString
    End If
End Sub

 

DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 24.09.2003
  Gültig bis: 23.12.2003
5 Ratings
Bewertung: 72,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG