Panoramica del comportamento del mouse con trascinamento della selezione (Windows Form .NET)

Windows Forms include un set di metodi, eventi e classi che implementano il comportamento di trascinamento e rilascio. In questo argomento viene fornita una panoramica del supporto di trascinamento della selezione in Windows Form.

Eventi di trascinamento della selezione

Esistono due categorie di eventi in un'operazione di trascinamento della selezione: eventi che si verificano sulla destinazione corrente ed eventi che si verificano sull'origine dell'operazione di trascinamento della selezione. Per eseguire operazioni di trascinamento della selezione, è necessario gestire questi eventi. Usando le informazioni disponibili negli argomenti di questi eventi, è possibile facilitare le operazioni di trascinamento della selezione.

Eventi nella destinazione di rilascio corrente

La tabella seguente illustra gli eventi che si verificano sulla destinazione corrente di un'operazione di trascinamento della selezione.

Evento del mouse Descrizione
DragEnter Questo evento si verifica quando un oggetto viene trascinato all'interno dei limiti del controllo. Il gestore di questo evento riceve un argomento di tipo DragEventArgs.
DragOver Questo evento si verifica quando un oggetto viene trascinato mentre il puntatore del mouse è all'interno dei limiti del controllo. Il gestore di questo evento riceve un argomento di tipo DragEventArgs.
DragDrop Questo evento si verifica quando viene completata un'operazione di trascinamento della selezione. Il gestore di questo evento riceve un argomento di tipo DragEventArgs.
DragLeave Questo evento si verifica quando un oggetto viene trascinato all'esterno dei limiti del controllo. Il gestore di questo evento riceve un argomento di tipo EventArgs.

La classe DragEventArgs fornisce la posizione del puntatore del mouse, lo stato corrente dei pulsanti del mouse e dei tasti di modifica della tastiera, i dati trascinati e i valori dell'enumerazione DragDropEffects che specificano le operazioni consentite dall'origine dell'evento di trascinamento e l'effetto del rilascio sulla destinazione per l'operazione.

Eventi nell'origine di rilascio

La tabella seguente illustra gli eventi che si verificano sull'origine di un'operazione di trascinamento e rilascio.

Evento del mouse Descrizione
GiveFeedback Questo evento si verifica durante un'operazione di trascinamento. Permette di fornire all'utente un'indicazione visiva dell'operazione di trascinamento della selezione in corso, ad esempio cambiando l'aspetto del puntatore del mouse. Il gestore di questo evento riceve un argomento di tipo GiveFeedbackEventArgs.
QueryContinueDrag Questo evento si verifica durante un'operazione di trascinamento della selezione e consente all'origine del trascinamento di determinare se l'operazione deve essere annullata. Il gestore di questo evento riceve un argomento di tipo QueryContinueDragEventArgs.

La classe QueryContinueDragEventArgs fornisce lo stato corrente dei pulsanti del mouse e dei tasti di modifica della tastiera, un valore che specifica se è stato premuto il tasto ESC e un valore dell'enumerazione DragAction che è possibile impostare per specificare se l'operazione di trascinamento della selezione deve continuare.

Esecuzione del trascinamento della selezione

Le operazioni di trascinamento della selezione coinvolgono sempre due componenti, l'origine di trascinamento e la destinazione di rilascio. Per avviare un'operazione di trascinamento della selezione, designare un controllo come origine e gestire l'evento MouseDown . Nel gestore eventi chiamare il DoDragDrop metodo che fornisce i dati associati all'eliminazione e al DragDropEffects valore .

Impostare la proprietà del controllo di AllowDrop destinazione su true per consentire a tale controllo di accettare un'operazione di trascinamento della selezione. La destinazione gestisce due eventi, primo un evento in risposta al trascinamento posizionato sul controllo, ad esempio DragOver. E un secondo evento che è l'azione di rilascio stessa, DragDrop.

Nell'esempio seguente viene illustrato un trascinamento da un Label controllo a un oggetto TextBox. Al termine del trascinamento, risponde TextBox assegnando il testo dell'etichetta a se stesso.

// Initiate the drag
private void label1_MouseDown(object sender, MouseEventArgs e) =>
    DoDragDrop(((Label)sender).Text, DragDropEffects.All);

// Set the effect filter and allow the drop on this control
private void textBox1_DragOver(object sender, DragEventArgs e) =>
    e.Effect = DragDropEffects.All;

// React to the drop on this control
private void textBox1_DragDrop(object sender, DragEventArgs e) =>
    textBox1.Text = (string)e.Data.GetData(typeof(string));
' Initiate the drag
Private Sub Label1_MouseDown(sender As Object, e As MouseEventArgs)
    DoDragDrop(DirectCast(sender, Label).Text, DragDropEffects.All)
End Sub

' Set the effect filter and allow the drop on this control
Private Sub TextBox1_DragOver(sender As Object, e As DragEventArgs)
    e.Effect = DragDropEffects.All
End Sub

' React to the drop on this control
Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs)
    TextBox1.Text = e.Data.GetData(GetType(String))
End Sub

Per altre informazioni sugli effetti di trascinamento, vedere Data e AllowedEffect.

Vedi anche