QueryContinueDragEventHandler Delegar

Definição

Representa o método que manipulará o evento de 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

A origem de um evento.

e
QueryContinueDragEventArgs

Um QueryContinueDragEventArgs que contém os dados do evento.

Exemplos

O exemplo a seguir demonstra uma operação de arrastar e soltar entre dois ListBox controles. O exemplo chama o DoDragDrop método quando a ação de arrastar é iniciada. A ação de arrastar será iniciada se o mouse tiver se movido mais do que SystemInformation.DragSize do local do mouse durante o MouseDown evento. O IndexFromPoint método é usado para determinar o índice do item a ser arrastado durante o MouseDown evento.

O exemplo também demonstra o uso de cursores personalizados para a operação de arrastar e soltar. O exemplo pressupõe que dois arquivos de cursor, 3dwarro.cur e 3dwno.cur, existam no diretório do aplicativo, para os cursores personalizados de arrastar e sem soltar, respectivamente. Os cursores personalizados serão usados se o UseCustomCursorsCheckCheckBox for verificado. Os cursores personalizados são definidos no GiveFeedback manipulador de eventos.

O estado do teclado é avaliado no DragOver manipulador de eventos para o direito ListBox, para determinar qual operação de arrastar será baseada no estado das teclas SHIFT, CTRL, ALT ou CTRL+ALT. O local no qual ListBox a queda ocorreria também é determinado durante o DragOver evento. Se os dados a serem soltas não forem um String, o DragEventArgs.Effect será definido DragDropEffects.Nonecomo . Por fim, o status da queda é exibido no DropLocationLabelLabel.

Os dados a serem soltas para a direita ListBox são determinados no DragDrop manipulador de eventos e o String valor é adicionado no local apropriado no ListBox. Se a operação de arrastar se mover para fora dos limites do formulário, a operação de arrastar e soltar será cancelada no QueryContinueDrag manipulador de eventos.

Este trecho de código demonstra o uso do QueryContinueDragEventHandler delegado com o QueryContinueDrag evento . Consulte o DoDragDrop método para obter o exemplo 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

Comentários

Ao criar um QueryContinueDragEventHandler delegado, você identifica o método que manipulará o evento. Para associar o evento ao manipulador de eventos, adicione uma instância do delegado ao evento. O manipulador de eventos é chamado sempre que o evento ocorre, a menos que você remova o representante. Para obter mais informações sobre como lidar com eventos com delegados, consulte Manipulando e gerando eventos.

Métodos de Extensão

GetMethodInfo(Delegate)

Obtém um objeto que representa o método representado pelo delegado especificado.

Aplica-se a

Confira também