DragAction Enumeração

Definição

Especifica como e se uma operação do tipo "arrastar e soltar" deve continuar.Specifies how and if a drag-and-drop operation should continue.

public enum class DragAction
[System.Runtime.InteropServices.ComVisible(true)]
public enum DragAction
type DragAction = 
Public Enum DragAction
Herança
DragAction
Atributos

Campos

Cancel 2

A operação é cancelada sem mensagem de soltar.The operation is canceled with no drop message.

Continue 0

A operação continuará.The operation will continue.

Drop 1

A operação será interrompida ao soltar.The operation will stop with a drop.

Exemplos

O exemplo a seguir demonstra uma operação de arrastar e soltar entre dois ListBox controles.The following example demonstrates a drag-and-drop operation between two ListBox controls. O exemplo chama o DoDragDrop método quando a ação de arrastar é iniciada.The example calls the DoDragDrop method when the drag action starts. A ação de arrastar será iniciada se o mouse tiver SystemInformation.DragSize mudado mais do que o local MouseDown do mouse durante o evento.The drag action starts if the mouse has moved more than SystemInformation.DragSize from the mouse location during the MouseDown event. O IndexFromPoint método é usado para determinar o índice do item a ser arrastado durante MouseDown o evento.The IndexFromPoint method is used to determine the index of the item to drag during the MouseDown event.

O exemplo também demonstra o uso de cursores personalizados para a operação de arrastar e soltar.The example also demonstrates using custom cursors for the drag-and-drop operation. O exemplo supõe que dois arquivos de 3dwarro.cur cursor e 3dwno.curexistam no diretório do aplicativo, para os cursores arrastar e não soltar personalizados, respectivamente.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. Os cursores personalizados serão usados se o UseCustomCursorsCheck CheckBox estiver marcado.The custom cursors will be used if the UseCustomCursorsCheckCheckBox is checked. Os cursores personalizados são definidos no manipulador GiveFeedback de eventos.The custom cursors are set in the GiveFeedback event handler.

O estado do teclado é avaliado no DragOver manipulador de eventos à direita ListBox, para determinar qual será a operação de arrastar com base no estado das teclas Shift, CTRL, ALT ou 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. O local no ListBox qual a queda ocorre também é determinado durante o DragOver evento.The location in the ListBox where the drop would occur is also determined during the DragOver event. Se os dados a serem descartados Stringnão forem um DragEventArgs.Effect , o será DragDropEffects.Nonedefinido como.If the data to drop is not a String, then the DragEventArgs.Effect is set to DragDropEffects.None. Por fim, o status da remoção é exibido no DropLocationLabel. LabelFinally, the status of the drop is displayed in the DropLocationLabelLabel.

Os dados a serem descartados ListBox para a direita são DragDrop determinados no manipulador de String eventos e o valor ListBoxé adicionado no local apropriado no.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. Se a operação de arrastar se mover para fora dos limites do formulário, a operação de arrastar e soltar será cancelada no QueryContinueDrag manipulador de eventos.If the drag operation moves outside the bounds of the form, then the drag-and-drop operation is canceled in the QueryContinueDrag event handler.

Este trecho de código demonstra o DragAction uso da enumeração.This code excerpt demonstrates using the DragAction enumeration. Consulte o DoDragDrop método para obter o exemplo de código completo.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, System.Windows.Forms.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, System.Windows.Forms.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

Comentários

Essa enumeração é usada pelo QueryContinueDragEventArgs.This enumeration is used by QueryContinueDragEventArgs.

Aplica-se a