Přehled chování myši přetažením (model Windows Forms .NET)

model Windows Forms zahrnuje sadu metod, událostí a tříd, které implementují chování přetažení. Toto téma obsahuje přehled podpory přetažení v model Windows Forms.

Důležité

Dokumentace k desktopové příručce pro .NET 7 a .NET 6 se právě připravuje.

Události přetažení

Operace přetažení obsahuje dvě kategorie událostí: události, ke kterým dochází v aktuálním cíli operace přetažení, a události, ke kterým dochází ve zdroji operace přetažení. Chcete-li provádět operace přetažení, je nutné zpracovat tyto události. Díky práci s informacemi dostupnými v argumentech událostí těchto událostí můžete snadno usnadnit operace přetažení.

Události v aktuálním cíli přetažení

V následující tabulce jsou uvedeny události, ke kterým dochází v aktuálním cíli operace přetažení.

Událost myši Popis
DragEnter K této události dochází, když je objekt přetažen do hranic ovládacího prvku. Obslužná rutina pro tuto událost obdrží argument typu DragEventArgs.
DragOver K této události dochází, když je objekt přetažen, zatímco ukazatel myši je v mezích ovládacího prvku. Obslužná rutina pro tuto událost obdrží argument typu DragEventArgs.
DragDrop K této události dochází při dokončení operace přetažení. Obslužná rutina pro tuto událost obdrží argument typu DragEventArgs.
DragLeave K této události dochází, když je objekt přetažen z hranic ovládacího prvku. Obslužná rutina pro tuto událost obdrží argument typu EventArgs.

DragEventArgs Třída poskytuje umístění ukazatele myši, aktuální stav tlačítek myši a modifikační klávesy klávesnice, data přetahovaná a DragDropEffects hodnoty, které určují operace povolené zdrojem události přetažení a cílový efekt pro operaci.

Události ve zdroji přetažení

Následující tabulka ukazuje události, ke kterým dochází ve zdroji operace přetažení.

Událost myši Popis
GiveFeedback K této události dochází během operace přetažení. Poskytuje příležitost dát uživateli vizuální vodítko, že k operaci přetažení dochází, například změna ukazatele myši. Obslužná rutina pro tuto událost obdrží argument typu GiveFeedbackEventArgs.
QueryContinueDrag Tato událost se vyvolá během operace přetažení myší a umožňuje zdroji přetažení určit, zda má být operace přetažení zrušena. Obslužná rutina pro tuto událost obdrží argument typu QueryContinueDragEventArgs.

QueryContinueDragEventArgs Třída poskytuje aktuální stav tlačítek myši a modifikační klávesy klávesnice, hodnotu určující, zda byla stisknuta klávesa ESC, a DragAction hodnota, která může být nastavena tak, aby určila, zda má operace přetažení pokračovat.

Provádění přetažení

Operace přetažení vždy zahrnují dvě komponenty, zdroj přetažení a cíl přetažení. Chcete-li spustit operaci přetažení myší, určete ovládací prvek jako zdroj a zpracování MouseDown události. V obslužné rutině události zavolejte metodu DoDragDrop poskytující data přidružená k poklesu DragDropEffects a hodnotu.

Nastavte vlastnost cílového AllowDrop ovládacího prvku tak, aby true tento ovládací prvek mohl přijmout operaci přetažení. Cíl zpracovává dvě události, první událost v reakci na přetažení přes ovládací prvek, například DragOver. A druhá událost, která je samotná akce přetažení , DragDrop.

Následující příklad ukazuje přetažení z Label ovládacího prvku na .TextBox Po dokončení TextBox přetažení odpoví přiřazením textu popisku k sobě.

// 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

Další informace o efektech přetažení naleznete Data a AllowedEffect.

Viz také