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 dos controles ListBox.The following example demonstrates a drag-and-drop operation between two ListBox controls. En el ejemplo se llama al método DoDragDrop 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 desde la ubicación del mouse durante el evento de MouseDown.The drag action starts if the mouse has moved more than SystemInformation.DragSize from the mouse location during the MouseDown event. El método IndexFromPoint se utiliza para determinar el índice del elemento que se va a arrastrar durante el evento MouseDown.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. Los cursores personalizados se utilizarán si se comprueba el CheckBox de UseCustomCursorsCheck.The custom cursors will be used if the UseCustomCursorsCheckCheckBox is checked. Los cursores personalizados se establecen en el controlador de eventos GiveFeedback.The custom cursors are set in the GiveFeedback event handler.

El estado del teclado se evalúa en el controlador de eventos DragOver para el ListBoxderecho, 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 el ListBox donde se produciría la colocación también se determina durante el evento DragOver.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 un 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 el LabelDropLocationLabel.Finally, the status of the drop is displayed in the DropLocationLabelLabel.

Los datos que se van a quitar para la ListBox derecha se determinan en el controlador de eventos DragDrop y se agrega el valor String en el lugar adecuado del 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 arrastrar se mueve fuera de los límites del formulario, la operación de arrastrar y colocar se cancela en el controlador de eventos QueryContinueDrag.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 enumeración DragAction.This code excerpt demonstrates using the DragAction enumeration. Vea el método DoDragDrop 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

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

Se aplica a