QueryContinueDragEventHandler Delegado
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa el método que controlará el evento QueryContinueDrag de 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.
Objeto QueryContinueDragEventArgs que contiene los datos del evento.
Ejemplos
En el ejemplo siguiente se muestra una operación de arrastrar y colocar entre dos ListBox controles. En el ejemplo se llama al DoDragDrop método cuando se inicia la acción de arrastre. La acción de arrastrar se inicia si el mouse se ha movido más que SystemInformation.DragSize desde la ubicación del mouse durante el MouseDown evento. El IndexFromPoint método se usa para determinar el índice del elemento que se va a arrastrar durante el MouseDown
evento.
En el ejemplo también se muestra el uso de cursores personalizados para la operación de arrastrar y colocar. En el ejemplo se supone que existen dos archivos de cursor y 3dwarro.cur
3dwno.cur
, en el directorio de la aplicación, para los cursores personalizados de arrastrar y sin colocar, respectivamente. Los cursores personalizados se usarán si UseCustomCursorsCheck
CheckBox está activado. Los cursores personalizados se establecen en el controlador de GiveFeedback eventos.
El estado del teclado se evalúa en el DragOver controlador de eventos de la derecha ListBox
para determinar cuál será la operación de arrastre según el estado de las teclas MAYÚS, CTRL, ALT o CTRL+ALT. La ubicación en la ListBox
que se produciría la colocación también se determina durante el DragOver
evento. Si los datos que se van a quitar no son , String
se establece DragDropEffects.Noneen DragEventArgs.Effect . Por último, el estado de la colocación se muestra en .DropLocationLabel
Label
Los datos que se van a quitar de la derecha ListBox
se determinan en el DragDrop controlador de eventos y el String
valor se agrega en el lugar adecuado de .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.
Este fragmento de código muestra cómo usar el QueryContinueDragEventHandler delegado con el QueryContinueDrag evento . Consulte el método para obtener el DoDragDrop ejemplo de código completo.
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
Cuando se crea un delegado QueryContinueDragEventHandler, se identifica el método que controlará el evento. Para asociar el evento al controlador, se debe agregar una instancia del delegado al evento. Siempre que se produce el evento, se llama a su controlador, a menos que se quite el delegado. Para obtener más información sobre cómo controlar eventos con delegados, vea Control y generación de eventos.
Métodos de extensión
GetMethodInfo(Delegate) |
Obtiene un objeto que representa el método representado por el delegado especificado. |
Se aplica a
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de