DragAction Enumeración

Definición

Especifica si debe continuar una operación de arrastrar y colocar y de qué forma.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
Herencia
DragAction
Atributos

Campos

Cancel 2

La operación se cancela sin mensaje relacionado con la operación de colocar.The operation is canceled with no drop message.

Continue 0

La operación continuará.The operation will continue.

Drop 1

La operación se detendrá con una operación de colocar.The operation will stop with a drop.

Ejemplos

En el ejemplo siguiente se muestra una operación de arrastrar y colocar entre dos ListBox controles.The following example demonstrates a drag-and-drop operation between two ListBox controls. En el ejemplo se llama al DoDragDrop método cuando se inicia la acción de arrastrar.The example calls the DoDragDrop method when the drag action starts. La acción de arrastrar comienza si el mouse ha pasado más de SystemInformation.DragSize la ubicación del mouse durante el MouseDown evento.The drag action starts if the mouse has moved more than SystemInformation.DragSize from the mouse location during the MouseDown event. El IndexFromPoint método se utiliza para determinar el índice del elemento que se va a arrastrar durante el MouseDown evento.The IndexFromPoint method is used to determine the index of the item to drag during the MouseDown event.

En el ejemplo también se muestra el uso de cursores personalizados para la operación de arrastrar y colocar.The example also demonstrates using custom cursors for the drag-and-drop operation. En el ejemplo se da por supuesto que dos archivos de cursor, 3dwarro.cur y 3dwno.cur , existen en el directorio de la aplicación para los cursores de arrastrar y no colocar 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. Se usarán los cursores personalizados si UseCustomCursorsCheck CheckBox está activado.The custom cursors will be used if the UseCustomCursorsCheckCheckBox is checked. Los cursores personalizados se establecen en el GiveFeedback controlador de eventos.The custom cursors are set in the GiveFeedback event handler.

El estado del teclado se evalúa en el DragOver controlador de eventos de la derecha ListBox , para determinar qué operación de arrastre se basará en el estado de las teclas Mayús, Ctrl, Alt o 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. La ubicación en ListBox donde se produciría la colocación también se determina durante el DragOver evento.The location in the ListBox where the drop would occur is also determined during the DragOver event. Si los datos que se van a quitar no son String , el DragEventArgs.Effect se establece en DragDropEffects.None .If the data to drop is not a String, then the DragEventArgs.Effect is set to DragDropEffects.None. Por último, el estado de la eliminación se muestra en DropLocationLabel Label .Finally, the status of the drop is displayed in the DropLocationLabelLabel.

Los datos que se van a quitar para el derecho ListBox se determinan en el DragDrop controlador de eventos y el String valor se agrega en el lugar adecuado en 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. Si la operación de arrastre se mueve fuera de los límites del formulario, la operación de arrastrar y colocar se cancela en el controlador de QueryContinueDrag 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.

En este fragmento de código se muestra cómo usar la DragAction enumeración.This code excerpt demonstrates using the DragAction enumeration. Vea el DoDragDrop método para obtener el ejemplo 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, 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

Comentarios

Utiliza esta enumeración QueryContinueDragEventArgs .This enumeration is used by QueryContinueDragEventArgs.

Se aplica a