Control.QueryContinueDrag Evento
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Ocorre durante uma operação de arrastar e largar e permite à fonte de arrastar determinar se a operação de arrastar e largar deve ser cancelada.
public:
event System::Windows::Forms::QueryContinueDragEventHandler ^ QueryContinueDrag;
public event System.Windows.Forms.QueryContinueDragEventHandler QueryContinueDrag;
member this.QueryContinueDrag : System.Windows.Forms.QueryContinueDragEventHandler
Public Custom Event QueryContinueDrag As QueryContinueDragEventHandler
Tipo de Evento
Exemplos
Este excerto do código demonstra o uso do QueryContinueDrag evento para cancelar a operação de arrastar e largar se a operação de arrastar sair dos limites do formulário. Veja o DoDragDrop método para o exemplo completo do código.
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
Observações
O QueryContinueDrag evento é ativado quando há uma alteração no estado do teclado ou do rato durante uma operação de arrastar e largar. O QueryContinueDrag evento permite que a fonte de arrastar determine se a operação de arrastar e largar deve ser cancelada.
O que se segue descreve como e quando são surgidos eventos relacionados com operações de arrastar e largar.
O DoDragDrop método determina o controlo sob a localização atual do cursor. Depois verifica se o controlo é um alvo válido para a queda.
Se o controlo for um alvo válido para largar, o GiveFeedback evento é levantado com o efeito de arrastar e largar especificado. Para uma lista de efeitos de arrastar e largar, consulte a DragDropEffects enumeração.
As alterações na posição do cursor do rato, no estado do teclado e no estado dos botões do rato são registadas.
Se o utilizador sair de uma janela, o DragLeave evento é elevado.
Se o rato introduzir outro controlo, o DragEnter para esse controlo é elevado.
Se o rato se mover mas permanecer dentro do mesmo controlo, o DragOver evento é elevado.
Se houver uma alteração no estado do teclado ou do rato, o QueryContinueDrag evento é ativado e determina se continua a arrastar, se se largam os dados ou se cancelam a operação com base no valor Action da propriedade do QueryContinueDragEventArgsevento .
Se o valor de DragAction for , o DragOver evento é elevado para continuar a operação e o GiveFeedback evento é elevado com o novo efeito para que o feedback visual adequado
Continuepossa ser estabelecido. Para uma lista de efeitos de queda válidos, consulte a DragDropEffects enumeração.Note
Os DragOver eventos e GiveFeedback são emparelhados de modo que, à medida que o rato se move pelo alvo de queda, o utilizador receba o feedback de maior up-to-data sobre a posição do rato.
Se o valor de DragAction for
Drop, o valor do efeito de queda é devolvido à fonte, para que a aplicação fonte possa realizar a operação apropriada sobre os dados fonte; por exemplo, cortar os dados se a operação for uma mudança.Se o valor de DragAction for
Cancel, o DragLeave evento é elevado.
Por defeito, o QueryContinueDrag evento define Action para Cancel in DragAction se a tecla ESC for pressionada e para ActionDrop in DragAction se o botão esquerdo, do meio ou direito do rato for pressionado.
Para obter mais informações sobre como manipular eventos, consulte Manipulando e gerando eventos.