QueryContinueDragEventHandler Delegar
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa o método que manipulará o evento QueryContinueDrag de um 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.
Um QueryContinueDragEventArgs que contém os dados do evento.
Exemplos
O exemplo a seguir demonstra uma operação de arrastar e soltar entre dois controles ListBox. O exemplo chama o método DoDragDrop quando a ação de arrastar é iniciada. A ação de arrastar será iniciada se o mouse tiver se movido mais de SystemInformation.DragSize do local do mouse durante o evento MouseDown. O método IndexFromPoint é usado para determinar o índice do item a ser arrastado durante o evento MouseDown
.
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 de arrastar e sem soltar personalizados, respectivamente. Os cursores personalizados serão usados se o UseCustomCursorsCheck
CheckBox for verificado. Os cursores personalizados são definidos no manipulador de eventos GiveFeedback.
O estado do teclado é avaliado no manipulador de eventos DragOver para a ListBox
direita, para determinar qual operação de arrastar será baseada no estado das teclas SHIFT, CTRL, ALT ou CTRL+ALT. O local no ListBox
em que a queda ocorreria também é determinado durante o evento DragOver
. Se os dados a serem removidos não forem um String
, o DragEventArgs.Effect será definido como DragDropEffects.None. Por fim, o status da queda é exibido no DropLocationLabel
Label.
Os dados a serem removidos para o ListBox
direito são determinados no manipulador de eventos DragDrop e o valor String
é 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 manipulador de eventos QueryContinueDrag.
Este trecho de código demonstra o uso do delegado QueryContinueDragEventHandler com o evento QueryContinueDrag. Consulte o método DoDragDrop para 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 representante QueryContinueDragEventHandler, 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 delegado. Para obter mais informações sobre como lidar com eventos com delegados, consulte Manipulação e geração de eventos.
Métodos de Extensão
GetMethodInfo(Delegate) |
Obtém um objeto que representa o método representado pelo delegado especificado. |