QueryContinueDragEventHandler Delegado

Definición

Representa el método que controlará el evento QueryContinueDrag de Control.Represents the method that will handle the QueryContinueDrag event of a Control.

public delegate void QueryContinueDragEventHandler(System::Object ^ sender, QueryContinueDragEventArgs ^ e);
public delegate void QueryContinueDragEventHandler(object? sender, QueryContinueDragEventArgs e);
public delegate void QueryContinueDragEventHandler(object sender, QueryContinueDragEventArgs e);
type QueryContinueDragEventHandler = delegate of obj * QueryContinueDragEventArgs -> unit
Public Delegate Sub QueryContinueDragEventHandler(sender As Object, e As QueryContinueDragEventArgs)

Parámetros

sender
Object

Origen de un evento.The source of an event.

e
QueryContinueDragEventArgs

Objeto QueryContinueDragEventArgs que contiene los datos del evento.A QueryContinueDragEventArgs that contains the event data.

Herencia
QueryContinueDragEventHandler

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 el QueryContinueDragEventHandler delegado con el QueryContinueDrag evento.This code excerpt demonstrates using the QueryContinueDragEventHandler delegate with the QueryContinueDrag event. 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

Cuando se crea un delegado QueryContinueDragEventHandler, se identifica el método que controlará el evento.When you create a QueryContinueDragEventHandler delegate, you identify the method that will handle the event. Para asociar el evento al controlador, se debe agregar una instancia del delegado al evento.To associate the event with your event handler, add an instance of the delegate to the event. Siempre que se produce el evento, se llama a su controlador, a menos que se quite el delegado.The event handler is called whenever the event occurs, unless you remove the delegate. Para obtener más información sobre el control de eventos con delegados, vea controlar y provocar eventos.For more information about handling events with delegates, see Handling and Raising Events.

Métodos de extensión

GetMethodInfo(Delegate)

Obtiene un objeto que representa el método representado por el delegado especificado.Gets an object that represents the method represented by the specified delegate.

Se aplica a

Consulte también