Control.QueryContinueDrag Evento
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Si verifica durante un'operazione di trascinamento della selezione e consente all'origine di trascinamento di determinare se l'operazione di trascinamento della selezione deve essere annullata.
public:
event System::Windows::Forms::QueryContinueDragEventHandler ^ QueryContinueDrag;
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 evento
Esempio
Questo estratto di codice illustra l'utilizzo dell'evento per annullare l'operazione QueryContinueDrag di trascinamento della selezione se l'operazione di trascinamento si sposta all'esterno dei limiti del form. Vedere il DoDragDrop metodo per l'esempio di codice 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
Commenti
L'evento QueryContinueDrag viene generato quando si verifica una modifica dello stato della tastiera o del pulsante del mouse durante un'operazione di trascinamento della selezione. L'evento QueryContinueDrag consente all'origine di trascinamento di determinare se l'operazione di trascinamento della selezione deve essere annullata.
Di seguito viene descritto come e quando vengono generati eventi correlati alle operazioni di trascinamento della selezione.
Il DoDragDrop metodo determina il controllo sotto la posizione corrente del cursore. Controlla quindi se il controllo è una destinazione di rilascio valida.
Se il controllo è una destinazione di rilascio valida, l'evento GiveFeedback viene generato con l'effetto di trascinamento della selezione specificato. Per un elenco degli effetti di trascinamento della selezione, vedere l'enumerazione DragDropEffects .
Vengono rilevate modifiche alla posizione del cursore del mouse, allo stato della tastiera e al pulsante del mouse.
Se l'utente si sposta all'esterno di una finestra, viene generato l'evento DragLeave .
Se il mouse entra in un altro controllo, viene generato l'oggetto DragEnter per tale controllo.
Se il mouse si sposta ma rimane all'interno dello stesso controllo, viene generato l'evento DragOver .
Se si verifica una modifica nello stato della tastiera o del pulsante del mouse, l'evento QueryContinueDrag viene generato e determina se continuare il trascinamento, rilasciare i dati o annullare l'operazione in base al valore della Action proprietà dell'evento QueryContinueDragEventArgs.
Se il valore di DragAction è
Continue, l'evento DragOver viene generato per continuare l'operazione e l'evento GiveFeedback viene generato con il nuovo effetto in modo che sia possibile impostare il feedback visivo appropriato. Per un elenco di effetti di rilascio validi, vedere l'enumerazione DragDropEffects .Annotazioni
Gli DragOver eventi e GiveFeedback vengono associati in modo che quando il mouse si sposta attraverso la destinazione di rilascio, all'utente viene assegnato il feedback più up-to-date sulla posizione del mouse.
Se il valore di è
Drop, il valore dell'effetto di rilascio viene restituito all'origine, in modo che l'applicazione di origine possa eseguire l'operazione appropriata sui dati di DragAction origine, ad esempio tagliare i dati se l'operazione è stata spostata.Se il valore di DragAction è
Cancel, viene generato l'evento DragLeave .
Per impostazione predefinita, l'evento QueryContinueDrag imposta Action su Cancel in DragAction se il tasto ESC è stato premuto e imposta Action su Drop in DragAction se viene premuto il pulsante sinistro, centrale o destro del mouse.
Per ulteriori informazioni sulla gestione degli eventi, consultare gestione e generazione di eventi.