Control.DragEnter Evento

Definizione

Si verifica quando un oggetto viene trascinato nei limiti del controllo.

public:
 event System::Windows::Forms::DragEventHandler ^ DragEnter;
public event System.Windows.Forms.DragEventHandler DragEnter;
member this.DragEnter : System.Windows.Forms.DragEventHandler 
Public Custom Event DragEnter As DragEventHandler 

Tipo evento

DragEventHandler

Esempio

Nell'esempio di codice seguente viene illustrata un'operazione di trascinamento della selezione tra due ListBox controlli . Nell'esempio viene chiamato DoDragDrop il metodo all'avvio dell'azione di trascinamento. L'azione di trascinamento viene avviata se il mouse è stato spostato di SystemInformation.DragSize più rispetto alla posizione del mouse durante l'evento MouseDown . Il IndexFromPoint metodo viene usato per determinare l'indice dell'elemento da trascinare durante l'evento MouseDown .

L'esempio illustra anche l'uso di cursori personalizzati per l'operazione di trascinamento della selezione. Nell'esempio è necessario che nella directory dell'applicazione siano presenti due file di cursore, e , rispettivamente per i cursori di trascinamento personalizzati e 3dwarro.cur 3dwno.cur non di rilascio. Se l'oggetto è selezionato, verranno usati UseCustomCursorsCheck CheckBox i cursori personalizzati. I cursori personalizzati vengono impostati nel GiveFeedback gestore eventi.

Lo stato della tastiera viene valutato nel gestore eventi per il controllo a destra, per determinare quale operazione di trascinamento sarà basata sullo stato dei tasti DragOver ListBox MAIUSC, CTRL, ALT o CTRL+ALT. Durante l'evento viene determinata anche la posizione in cui si verificherà ListBox il DragOver rilascio. Se i dati da eliminare non sono String , DragEventArgs.Effect l'oggetto è impostato su in None DragDropEffects . Infine, lo stato dell'eliminazione viene visualizzato in DropLocationLabel Label .

I dati da eliminare a destra vengono determinati nel gestore eventi e il valore viene aggiunto ListBox nella posizione appropriata in DragDrop String ListBox . Se l'operazione di trascinamento si sposta all'esterno dei limiti del form, l'operazione di trascinamento della selezione viene annullata nel QueryContinueDrag gestore eventi.

Questo estratto di codice illustra l'uso DragEnter dell'evento . Vedere il DoDragDrop metodo per l'esempio di codice completo.

void ListDragTarget_DragEnter( Object^ /*sender*/, System::Windows::Forms::DragEventArgs^ /*e*/ )
{
   // Reset the label text.
   DropLocationLabel->Text = "None";
}
private void ListDragTarget_DragEnter(object sender, DragEventArgs e)
{
    // Reset the label text.
    DropLocationLabel.Text = "None";
}
Private Sub ListDragTarget_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles ListDragTarget.DragEnter
    ' Reset the label text.
    DropLocationLabel.Text = "None"
End Sub

Commenti

L'evento viene generato quando l'utente trascina per la prima volta il cursore del mouse sul DragEnter controllo durante un'operazione di trascinamento della selezione.

Nota

Nelle versioni precedenti a .NET Framework 2.0, se si mette un oggetto con gli eventi e in un form Windows e si trascina un elemento in in fase di UserControl DragEnter DragDrop UserControl progettazione, DropDrop vengono generati gli eventi e DropEnter . Tuttavia, quando si chiude e riapre la soluzione, gli DragEnter eventi e non vengono generati di DragDrop nuovo.

Di seguito vengono illustrate le modalità e le circostanze in cui vengono generati eventi relativi a operazioni di trascinamento.

Il DoDragDrop metodo determina il controllo nella posizione corrente del cursore. Verifica quindi se il controllo è una destinazione di rilascio valida.

Se il controllo è una destinazione di rilascio valida, l'evento viene generato con l'effetto di trascinamento GiveFeedback della selezione specificato. Per un elenco degli effetti di trascinamento e rilascio, vedere l'enumerazione DragDropEffects.

Viene tenuta traccia delle modifiche apportate alla posizione del cursore del mouse, allo stato della tastiera e allo stato dei pulsanti del mouse.

  • Se l'utente si sposta al di fuori di una finestra, verrà generato un evento DragLeave.

  • Se il mouse viene spostato su un altro controllo, verrà generato l'evento DragEnter per tale controllo.

  • Se il mouse viene spostato ma sempre all'interno dello stesso controllo, verrà generato l'evento DragOver.

In caso di modifica dello stato della tastiera o del pulsante del mouse, l'evento viene generato e determina se continuare il trascinamento, rilasciare i dati o annullare l'operazione in base al valore della proprietà QueryContinueDrag Action dell'evento QueryContinueDragEventArgs .

  • Se il valore di è , l'evento viene generato per continuare l'operazione e l'evento viene generato con il nuovo effetto in modo che sia possibile impostare il DragAction Continue feedback visivo DragOver GiveFeedback appropriato. Per un elenco degli effetti di trascinamento validi, vedere l'enumerazione DragDropEffects.

    Nota

    Gli eventi e vengono associati in modo che quando il mouse si sposta sulla destinazione di DragOver rilascio, all'utente viene fornito il feedback più aggiornato sulla posizione GiveFeedback del mouse.

  • Se il valore di è , 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 origine, ad esempio tagliare i dati se l'operazione è DragAction Drop stata spostata.

  • Se il valore di DragAction è , viene generato Cancel DragLeave l'evento .

    Nota

    Le X proprietà Y e DragEventArgs dell'oggetto sono in coordinate dello schermo, non coordinate client. La riga di codice Visual C# seguente converte le proprietà in un client Point .

    Point clientPoint = targetControl.PointToClient(new Point(de.X, de.Y));  
    

Per ulteriori informazioni sulla gestione degli eventi, consultare gestione e generazione di eventi.

Si applica a

Vedi anche