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
[System.Runtime.InteropServices.ComVisible(true)]
public enum DragAction
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 ListBox dos controles.The following example demonstrates a drag-and-drop operation between two ListBox controls. En el ejemplo se DoDragDrop llama al 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 SystemInformation.DragSize de la ubicación del mouse durante MouseDown el 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 MouseDown durante el 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 3dwarro.cur dos 3dwno.curarchivos de cursor, y, 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 DragOver el controlador de eventos de ListBoxla derecha, 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 Stringno son, DragEventArgs.Effect el se establece DragDropEffects.Noneen.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. LabelFinally, the status of the drop is displayed in the DropLocationLabelLabel.

Los datos que se van a quitar ListBox para el derecho se DragDrop determinan en String el controlador de eventos y el valor ListBoxse agrega en el lugar adecuado en.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 QueryContinueDrag controlador 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.

En este fragmento de código se DragAction muestra cómo usar la 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, 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

Comentarios

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

Se aplica a