DragAction Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa, jak i czy operacja przeciągania i upuszczania powinna być kontynuowana.
public enum class DragAction
[System.Runtime.InteropServices.ComVisible(true)]
public enum DragAction
public enum DragAction
[<System.Runtime.InteropServices.ComVisible(true)>]
type DragAction =
type DragAction =
Public Enum DragAction
- Dziedziczenie
- Atrybuty
Pola
Cancel | 2 | Operacja jest anulowana bez komunikatu upuszczania. |
Continue | 0 | Operacja będzie kontynuowana. |
Drop | 1 | Operacja zostanie zatrzymana z usunięciem. |
Przykłady
W poniższym przykładzie pokazano operację przeciągania i upuszczania między dwoma kontrolkami ListBox. Przykład wywołuje metodę DoDragDrop po uruchomieniu akcji przeciągania. Akcja przeciągania rozpoczyna się, jeśli mysz przeniosła się więcej niż SystemInformation.DragSize z lokalizacji myszy podczas zdarzenia MouseDown. Metoda IndexFromPoint służy do określania indeksu elementu do przeciągania podczas zdarzenia MouseDown
.
W przykładzie pokazano również użycie niestandardowych kursorów dla operacji przeciągania i upuszczania. W przykładzie przyjęto założenie, że dwa pliki kursorów, 3dwarro.cur
i 3dwno.cur
, istnieją w katalogu aplikacji, odpowiednio dla niestandardowego przeciągania i bez upuszczania kursorów. Kursory niestandardowe będą używane, jeśli zaznaczono UseCustomCursorsCheck
CheckBox. Kursory niestandardowe są ustawiane w procedurze obsługi zdarzeń GiveFeedback.
Stan klawiatury jest obliczany w procedurze obsługi zdarzeń DragOver dla prawego ListBox
, aby określić, jaka operacja przeciągania będzie oparta na stanie SHIFT, CTRL, ALT lub CTRL+ALT. Lokalizacja w ListBox
, w której występuje spadek, jest również określana podczas zdarzenia DragOver
. Jeśli dane do porzucenia nie są String
, DragEventArgs.Effect jest ustawiona na wartość DragDropEffects.None. Na koniec stan upuszczania jest wyświetlany w DropLocationLabel
Label.
Dane do upuszczania odpowiedniego ListBox
są określane w procedurze obsługi zdarzeń DragDrop, a wartość String
jest dodawana w odpowiednim miejscu w ListBox
. Jeśli operacja przeciągania przesuwa się poza granice formularza, operacja przeciągania i upuszczania zostanie anulowana w programie obsługi zdarzeń QueryContinueDrag.
Ten fragment kodu przedstawia użycie wyliczenia DragAction. Zobacz metodę DoDragDrop, aby zapoznać się z kompletnym przykładem kodu.
void ListDragSource_QueryContinueDrag( Object^ sender, System::Windows::Forms::QueryContinueDragEventArgs^ e )
{
// Cancel the drag if the mouse moves off the form.
ListBox^ lb = dynamic_cast<ListBox^>(sender);
if ( lb != nullptr )
{
Form^ f = lb->FindForm();
// Cancel the drag if the mouse moves off the form. The screenOffset
// takes into account any desktop bands that may be at the top or left
// side of the screen.
if ( ((Control::MousePosition.X - screenOffset.X) < f->DesktopBounds.Left) || ((Control::MousePosition.X - screenOffset.X) > f->DesktopBounds.Right) || ((Control::MousePosition.Y - screenOffset.Y) < f->DesktopBounds.Top) || ((Control::MousePosition.Y - screenOffset.Y) > f->DesktopBounds.Bottom) )
{
e->Action = DragAction::Cancel;
}
}
}
private void ListDragSource_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
{
// Cancel the drag if the mouse moves off the form.
ListBox lb = sender as ListBox;
if (lb != null)
{
Form f = lb.FindForm();
// Cancel the drag if the mouse moves off the form. The screenOffset
// takes into account any desktop bands that may be at the top or left
// side of the screen.
if (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) ||
((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) ||
((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) ||
((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom))
{
e.Action = DragAction.Cancel;
}
}
}
Private Sub ListDragSource_QueryContinueDrag(ByVal sender As Object, ByVal e As QueryContinueDragEventArgs) Handles ListDragSource.QueryContinueDrag
' Cancel the drag if the mouse moves off the form.
Dim lb As ListBox = CType(sender, ListBox)
If (lb IsNot Nothing) Then
Dim f As Form = lb.FindForm()
' Cancel the drag if the mouse moves off the form. The screenOffset
' takes into account any desktop bands that may be at the top or left
' side of the screen.
If (((Control.MousePosition.X - screenOffset.X) < f.DesktopBounds.Left) Or
((Control.MousePosition.X - screenOffset.X) > f.DesktopBounds.Right) Or
((Control.MousePosition.Y - screenOffset.Y) < f.DesktopBounds.Top) Or
((Control.MousePosition.Y - screenOffset.Y) > f.DesktopBounds.Bottom)) Then
e.Action = DragAction.Cancel
End If
End If
End Sub
Uwagi
To wyliczenie jest używane przez QueryContinueDragEventArgs.