Sdílet prostřednictvím


Control.DragEnter Událost

Definice

Nastane, když je objekt přetažen do hranic ovládacího prvku.

public:
 event System::Windows::Forms::DragEventHandler ^ DragEnter;
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 

Event Type

Příklady

Následující příklad kódu ukazuje operaci přetažení mezi dvěma ovládacími prvky ListBox. Příklad volá metodu DoDragDrop při spuštění akce přetažení. Akce přetažení se spustí, pokud se během události MouseDown přesunulo více než SystemInformation.DragSize z umístění myši. Metoda IndexFromPoint slouží k určení indexu položky, která se má přetáhnout během události MouseDown.

Příklad také ukazuje použití vlastních kurzorů pro operaci přetažení. Příklad vyžaduje, aby byly dva soubory kurzoru, 3dwarro.cur a 3dwno.cur, existují v adresáři aplikace pro vlastní přetažení a bez-drop kurzory, v uvedeném pořadí. Vlastní kurzory se použijí, pokud je zaškrtnuté UseCustomCursorsCheckCheckBox. Vlastní kurzory jsou nastaveny v obslužné rutině události GiveFeedback.

Stav klávesnice se vyhodnocuje v obslužné rutině události DragOver pro správnou ListBox, aby bylo možné určit, jaké operace přetažení bude založená na stavu kláves SHIFT, CTRL, ALT nebo CTRL+ALT. Umístění v ListBox, kde dojde k poklesu, je také určeno během DragOver události. Pokud data, která chcete odstranit, nejsou String, je DragEventArgs.Effect nastavena na None v DragDropEffects. Nakonec se stav poklesu zobrazí v DropLocationLabelLabel.

Data, která se mají odstranit pro správný ListBox, se určují v obslužné rutině události DragDrop a hodnota String se přidá na příslušné místo v ListBox. Pokud se operace přetažení přesune mimo hranice formuláře, operace přetažení se zruší v obslužné rutině události QueryContinueDrag.

Tento výňatek kódu ukazuje použití DragEnter události. Kompletní příklad kódu najdete v metodě DoDragDrop.

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

Poznámky

Událost DragEnter se vyvolá, když uživatel během operace přetažení přetáhne kurzor myši na ovládací prvek.

Poznámka

Pokud ve verzích starších než .NET Framework 2.0 vložíte UserControl s událostmi DragEnter a DragDrop ve formuláři Windows Form a přetáhnete něco na UserControl v době návrhu, vyvolá se události DropDrop a DropEnter. Když ale řešení zavřete a znovu otevřete, DragEnter a DragDrop události se znovu nevyvolají.

Následující článek popisuje, jak a kdy jsou vyvolány události související s operacemi přetažení myší.

Metoda DoDragDrop určuje ovládací prvek pod aktuálním umístěním kurzoru. Pak zkontroluje, jestli je ovládací prvek platným cílem odstranění.

Pokud je ovládací prvek platným cílem přetažení, je vyvolána událost GiveFeedback se zadaným efektem přetažení. Seznam efektů přetažení najdete v DragDropEffects výčtu.

Změny v poloze kurzoru myši, stavu klávesnice a stavu tlačítka myši jsou sledovány.

  • Pokud se uživatel přesune mimo okno, vyvolá se událost DragLeave.

  • Pokud myš přejde do jiného ovládacího prvku, DragEnter pro tento ovládací prvek se vyvolá.

  • Pokud se myš přesune, ale zůstane ve stejném ovládacím prvku, vyvolá se událost DragOver.

Pokud dojde ke změně stavu klávesnice nebo tlačítka myši, vyvolá se událost QueryContinueDrag a určí, zda má pokračovat přetažením, přetažením dat nebo zrušením operace na základě hodnoty vlastnosti ActionQueryContinueDragEventArgsudálosti .

  • Pokud je hodnota DragActionContinue, vyvolá se událost DragOver, aby pokračovala v operaci a událost GiveFeedback je vyvolána s novým efektem, aby bylo možné nastavit odpovídající vizuální zpětnou vazbu. Seznam platných efektů přetažení najdete v DragDropEffects výčtu.

    Poznámka

    Události DragOver a GiveFeedback jsou spárované tak, aby se při přesouvání myši přes cíl přetažení dostal uživatel nejvíce up-to-date feedback na pozici myši.

  • Pokud je hodnota DragActionDrop, vrátí se do zdroje hodnota efektu poklesu, takže zdrojová aplikace může provést příslušnou operaci se zdrojovými daty; Například vyjměte data, pokud byla operace přesunutím.

  • Pokud je hodnota DragActionCancel, vyvolá se událost DragLeave.

    Poznámka

    Vlastnosti X a YDragEventArgs jsou v souřadnicích obrazovky, nikoli v souřadnicích klienta. Následující řádek kódu Jazyka Visual C# převede vlastnosti na klientský Point.

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

Další informace o zpracování událostí naleznete v tématu zpracování a vyvolávání událostí.

Platí pro

Viz také