DragAction Wyliczenie

Definicja

Określa, jak i czy operacja przeciągania i upuszczania powinna być kontynuowana.Specifies how and if a drag-and-drop operation should continue.

public enum class DragAction
public enum DragAction
[System.Runtime.InteropServices.ComVisible(true)]
public enum DragAction
type DragAction = 
[<System.Runtime.InteropServices.ComVisible(true)>]
type DragAction = 
Public Enum DragAction
Dziedziczenie
DragAction
Atrybuty

Pola

Cancel 2

Operacja została anulowana, a nie Porzuć komunikatu.The operation is canceled with no drop message.

Continue 0

Operacja będzie kontynuowana.The operation will continue.

Drop 1

Operacja zostanie zatrzymana z porzuceniem.The operation will stop with a drop.

Przykłady

W poniższym przykładzie zademonstrowano operację przeciągania i upuszczania między dwoma ListBox kontrolkami.The following example demonstrates a drag-and-drop operation between two ListBox controls. Przykład wywołuje metodę, DoDragDrop gdy rozpocznie się akcja przeciągania.The example calls the DoDragDrop method when the drag action starts. Akcja przeciągania rozpocznie się, jeśli mysz została przeniesiona więcej niż SystemInformation.DragSize z lokalizacji myszy podczas MouseDown zdarzenia.The drag action starts if the mouse has moved more than SystemInformation.DragSize from the mouse location during the MouseDown event. IndexFromPointMetoda jest używana do określenia indeksu elementu do przeciągnięcia podczas MouseDown zdarzenia.The IndexFromPoint method is used to determine the index of the item to drag during the MouseDown event.

W przykładzie pokazano również, jak używać niestandardowych kursorów dla operacji przeciągania i upuszczania.The example also demonstrates using custom cursors for the drag-and-drop operation. W przykładzie przyjęto założenie, że dwa pliki kursora 3dwarro.cur i 3dwno.cur , istnieją w katalogu aplikacji, odpowiednio dla kursorów niestandardowych przeciągnij i nie upuszczaj.The example assumes that two cursor files, 3dwarro.cur and 3dwno.cur, exist in the application directory, for the custom drag and no-drop cursors, respectively. Kursory niestandardowe będą używane, jeśli UseCustomCursorsCheck CheckBox jest zaznaczone.The custom cursors will be used if the UseCustomCursorsCheckCheckBox is checked. Kursory niestandardowe są ustawiane w programie GiveFeedback obsługi zdarzeń.The custom cursors are set in the GiveFeedback event handler.

Stan klawiatury jest obliczany w DragOver procedurze obsługi zdarzeń po prawej stronie ListBox , aby określić, jaka operacja przeciągania będzie oparta na stanie klawiszy Shift, Ctrl, Alt lub Ctrl + Alt.The keyboard state is evaluated in the DragOver event handler for the right ListBox, to determine what the drag operation will be based upon state of the SHIFT, CTRL, ALT, or CTRL+ALT keys. Lokalizacja w miejscu, w ListBox którym występuje porzucanie, jest również określana podczas DragOver zdarzenia.The location in the ListBox where the drop would occur is also determined during the DragOver event. Jeśli dane do porzucenia nie są String , wówczas DragEventArgs.Effect jest ustawione na DragDropEffects.None .If the data to drop is not a String, then the DragEventArgs.Effect is set to DragDropEffects.None. Na koniec stan upuszczenia jest wyświetlany w DropLocationLabel Label .Finally, the status of the drop is displayed in the DropLocationLabelLabel.

Dane do porzucenia po prawej stronie ListBox są określane w programie DragDrop obsługi zdarzeń, a String wartość jest dodawana w odpowiednim miejscu w ListBox .The data to drop for the right ListBox is determined in the DragDrop event handler and the String value is added at the appropriate place in the ListBox. Jeśli operacja przeciągania przesunie się poza granice formularza, operacja przeciągania i upuszczania zostanie anulowana w QueryContinueDrag obsłudze zdarzeń.If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the QueryContinueDrag event handler.

Ten fragment kodu ilustruje użycie DragAction wyliczenia.This code excerpt demonstrates using the DragAction enumeration. Zobacz DoDragDrop metodę pełnego przykładu kodu.See the DoDragDrop method for the complete code example.

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 program QueryContinueDragEventArgs .This enumeration is used by QueryContinueDragEventArgs.

Dotyczy