Overzicht van muisgedrag bij slepen en neerzetten (Windows Forms .NET)
Windows Forms bevat een set methoden, gebeurtenissen en klassen die slepen en neerzetten implementeren. In dit onderwerp vindt u 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.
Muis gebeurtenis | 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 bewerking voor slepen en neerzetten 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 in de bron van de slepen-en-neerzetten-bewerking.
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 DoDragDrop aan die de gegevens levert die zijn gekoppeld aan de drop en de 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 verschuiving van een Label bediening naar een TextBox. Wanneer het slepen is voltooid, reageert TextBox
door de tekst van het label aan zichzelf 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
.NET Desktop feedback