Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Formularze systemu Windows zawierają zestaw metod, zdarzeń i klas, które implementują zachowanie przeciągania i upuszczania. Ten artykuł zawiera omówienie obsługi przeciągania i upuszczania w formularzach Windows Forms.
Zdarzenia przeciągania i upuszczania
Istnieją dwie kategorie zdarzeń w operacji przeciągania i upuszczania: zdarzenia występujące na bieżącym elemencie docelowym operacji przeciągania i upuszczania oraz zdarzenia występujące na źródle operacji przeciągania i upuszczania. Aby wykonać operacje przeciągania i upuszczania, należy obsłużyć te zdarzenia. Pracując z informacjami dostępnymi w argumentach tych zdarzeń, można łatwo umożliwić operacje przeciągania i upuszczania.
Zdarzenia dla bieżącego miejsca docelowego upuszczania
W poniższej tabeli przedstawiono zdarzenia występujące na bieżącym celu operacji przeciągania i upuszczania.
Zdarzenie myszy | Opis |
---|---|
DragEnter | To zdarzenie występuje, gdy obiekt jest przeciągany w obszar kontrolki. Obsługa tego zdarzenia otrzymuje argument typu DragEventArgs. |
DragOver | To zdarzenie występuje, gdy obiekt jest przeciągany, podczas gdy wskaźnik myszy znajduje się w granicach kontrolki. Obsługa tego zdarzenia otrzymuje argument typu DragEventArgs. |
DragDrop | To zdarzenie ma miejsce po zakończeniu operacji przeciągania i upuszczania. Obsługa tego zdarzenia otrzymuje argument typu DragEventArgs. |
DragLeave | To zdarzenie występuje, gdy obiekt jest przeciągany z granic kontrolki. Obsługa tego zdarzenia otrzymuje argument typu EventArgs. |
Klasa DragEventArgs udostępnia lokalizację wskaźnika myszy, bieżący stan przycisków myszy i klawiszy modyfikujących na klawiaturze, dane przeciągane oraz wartości DragDropEffects, które określają operacje dozwolone przez źródło zdarzenia przeciągania oraz efekt upuszczania docelowego dla operacji.
Zdarzenia w źródle upuszczania
W poniższej tabeli przedstawiono zdarzenia, które występują przy źródle operacji przeciągania i upuszczania.
Zdarzenie myszy | Opis |
---|---|
GiveFeedback | Zdarzenie to występuje podczas operacji przeciągania. Daje to możliwość przekazania użytkownikowi wizualnej wskazówki, że odbywa się operacja przeciągania i upuszczania, na przykład przez zmianę wskaźnika myszy. Obsługa tego zdarzenia otrzymuje argument typu GiveFeedbackEventArgs. |
QueryContinueDrag | To zdarzenie jest wywoływane podczas operacji przeciągania i upuszczania, umożliwiając źródłu przeciągania określenie, czy operacja powinna zostać anulowana. Obsługa tego zdarzenia otrzymuje argument typu QueryContinueDragEventArgs. |
Klasa QueryContinueDragEventArgs udostępnia bieżący stan przycisków myszy i modyfikujących klawiaturę, wartość określającą, czy ESC został naciśnięty, oraz wartość DragAction, którą można ustawić, aby określić, czy operacja przeciągania i upuszczania powinna być kontynuowana.
Wykonywanie przeciągania i upuszczania
Operacje przeciągania i upuszczania zawsze obejmują dwa składniki, źródło przeciągania i cel upuszczania. Aby rozpocząć operację przeciągania i upuszczania, trzeba wyznaczyć element sterujący jako źródło i obsłużyć zdarzenie MouseDown. W procedurze obsługi zdarzeń wywołaj metodę DoDragDrop , podając dane skojarzone z spadkiem i wartością DragDropEffects .
Ustaw właściwość AllowDrop kontrolki docelowej na true
, aby umożliwić tej kontrolce akceptowanie operacji przeciągania i upuszczania. Obiekt docelowy obsługuje dwa zdarzenia, najpierw zdarzenie w odpowiedzi na przeciąganie nad kontrolką, na przykład DragOver. Drugie zdarzenie, które polega na akcji upuszczania, DragDrop.
W poniższym przykładzie pokazano operację przeciągania i upuszczania z kontrolki Label do kontrolki TextBox. Po zakończeniu operacji TextBox
odpowiada, przypisując do siebie tekst etykiety.
// 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
Aby uzyskać więcej informacji na temat efektów przeciągania, zobacz Data i AllowedEffect.
Zobacz także
.NET Desktop feedback