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.
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é
.NET Desktop feedback