Delen via


Overzicht van het gedrag van slepen en neerzetten

Windows Forms bevat een set methoden, gebeurtenissen en klassen die slepen en neerzetten implementeren. Dit artikel bevat een overzicht van de ondersteuning voor slepen en neerzetten in Windows Forms.

Gebeurtenissen slepen en neerzetten

Er zijn twee categorieën gebeurtenissen in een bewerking voor slepen en neerzetten: gebeurtenissen die plaatsvinden op het huidige doel van de bewerking slepen en neerzetten, en gebeurtenissen die optreden op de bron van de slepen- en neerzetten-bewerking. Als u slepen-en-neerzetten-bewerkingen wilt uitvoeren, moet u deze gebeurtenissen afhandelen. Door te werken met de beschikbare informatie in de argumenten van deze gebeurtenissen, kunt u eenvoudig slepen-en-neerzetten-operaties vergemakkelijken.

Gebeurtenissen op de huidige doellocatie voor indeling

In de volgende tabel worden de gebeurtenissen weergegeven die zich voordoen bij het huidige doel van een slepen-en-neerzetten-actie.

Muisgebeurtenis Beschrijving
DragEnter Deze gebeurtenis treedt op wanneer een object naar de grenzen van het besturingselement wordt gesleept. De handler voor deze gebeurtenis ontvangt een argument van het type DragEventArgs.
DragOver Deze gebeurtenis treedt op wanneer een object wordt gesleept terwijl de muisaanwijzer zich binnen de grenzen van het besturingselement bevindt. De handler voor deze gebeurtenis ontvangt een argument van het type DragEventArgs.
DragDrop Deze gebeurtenis treedt op wanneer een sleep-en-neerzetbewerking is voltooid. De handler voor deze gebeurtenis ontvangt een argument van het type DragEventArgs.
DragLeave Deze gebeurtenis treedt op wanneer een object buiten de grenzen van het besturingselement wordt gesleept. De handler voor deze gebeurtenis ontvangt een argument van het type EventArgs.

De DragEventArgs-klasse biedt de locatie van de muis aanwijzer, de huidige status van de muisknoppen en wijzigingstoetsen van het toetsenbord, de gegevens die worden gesleept en DragDropEffects waarden die de bewerkingen opgeven die zijn toegestaan door de bron van de sleepgebeurtenis en het doeluitvaleffect voor de bewerking.

Gebeurtenissen in de bron voor neerzetten

In de volgende tabel ziet u de gebeurtenissen die optreden bij de bron van de sleep-en-neerzetbewerking.

Muisgebeurtenis Beschrijving
GiveFeedback Deze gebeurtenis vindt plaats tijdens een sleepbewerking. Het biedt de mogelijkheid om de gebruiker een visuele aanwijzing te geven dat een sleep-en-neerzetbewerking plaatsvindt, zoals het wijzigen van de muisaanwijzer. De handler voor deze gebeurtenis ontvangt een argument van het type GiveFeedbackEventArgs.
QueryContinueDrag Deze gebeurtenis wordt gegenereerd tijdens een slepen-en-neerzetten-bewerking en stelt de slepenbron in staat om te bepalen of de bewerking slepen en neerzetten moet worden geannuleerd. De handler voor deze gebeurtenis ontvangt een argument van het type QueryContinueDragEventArgs.

De QueryContinueDragEventArgs-klasse biedt de huidige status van de muisknoppen en wijzigingstoetsen van het toetsenbord, een waarde die aangeeft of de ESC-toets is ingedrukt en een DragAction waarde die kan worden ingesteld om op te geven of de bewerking slepen en neerzetten moet worden voortgezet.

Het uitvoeren van slepen en neerzetten

Sleep-en-neerzetoperaties omvatten altijd twee onderdelen, de sleepbron en het doel. Als u een slepen-en-neerzetten-bewerking wilt starten, wijst u een besturingselement aan als de bron en verwerkt u de MouseDown gebeurtenis. Roep in de gebeurtenis-handler de methode aan DoDragDrop die de gegevens opgeeft die zijn gekoppeld aan de daling en een DragDropEffects waarde.

Stel de AllowDrop eigenschap van het doelbesturingselement in op true zodat dat besturingselement een bewerking voor slepen en neerzetten kan accepteren. Het doelobject verwerkt twee gebeurtenissen, eerst een gebeurtenis als reactie op het slepen over het besturingselement, zoals DragOver. En een tweede gebeurtenis die de handeling van het neerzetten zelf is, DragDrop.

In het volgende voorbeeld ziet u een drag-and-drop operatie van een Label controle naar een TextBox. Wanneer de bewerking is voltooid, reageert de TextBox door zichzelf de tekst van het label toe te wijzen.

// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
    DoDragDrop(((Label)sender).Text, DragDropEffects.All);

// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
    e.Effect = DragDropEffects.All;

// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
    textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
    DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub

' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
    e.Effect = DragDropEffects.All
End Sub

' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
    TextBox1.Text = e.Data.GetData(GetType(String))
End Sub

Zie Data en AllowedEffectvoor meer informatie over de slepen-effecten.

Zie ook