Control.DragEnter Zdarzenie

Definicja

Występuje po przeciągnięciu obiektu w granice formantu.

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 

Typ zdarzenia

Przykłady

Poniższy przykład kodu przedstawia operację przeciągania i upuszczania między dwoma ListBox kontrolkami. Przykład wywołuje metodę DoDragDrop po uruchomieniu akcji przeciągania. Akcja przeciągania rozpoczyna się, jeśli mysz przeniosła się więcej niż SystemInformation.DragSize z lokalizacji myszy podczas MouseDown zdarzenia. Metoda IndexFromPoint służy do określania indeksu elementu do przeciągania podczas MouseDown zdarzenia.

W przykładzie pokazano również użycie niestandardowych kursorów dla operacji przeciągania i upuszczania. W przykładzie wymagane jest, aby dwa pliki 3dwarro.cur kursorów i 3dwno.cur, istniały w katalogu aplikacji, odpowiednio dla niestandardowego przeciągania i bez upuszczania kursorów. Kursory niestandardowe będą używane, jeśli element jest zaznaczony UseCustomCursorsCheckCheckBox . Kursory niestandardowe są ustawiane w procedurze obsługi zdarzeń GiveFeedback .

Stan klawiatury jest oceniany w procedurze DragOver obsługi zdarzeń po prawej stronie ListBox, aby określić, co operacja przeciągania będzie oparta na stanie klawiszy SHIFT, CTRL, ALT lub CTRL+ALT. Lokalizacja, w ListBox której występuje spadek, jest również określana podczas DragOver zdarzenia. Jeśli dane do porzucania nie są wartością String, DragEventArgs.Effect parametr jest ustawiony na None wartość w .DragDropEffects Na koniec stan upuszczania jest wyświetlany w elemecie DropLocationLabelLabel.

Dane do porzucania po prawej stronie ListBox są określane w procedurze DragDrop obsługi zdarzeń, a String wartość jest dodawana w odpowiednim miejscu w ListBoxobiekcie . Jeśli operacja przeciągania przesuwa się poza granice formularza, operacja przeciągania i upuszczania zostanie anulowana w procedurze QueryContinueDrag obsługi zdarzeń.

Ten fragment kodu przedstawia użycie DragEnter zdarzenia. Zobacz metodę DoDragDrop kompletnego przykładu kodu.

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

Uwagi

Zdarzenie DragEnter jest zgłaszane, gdy użytkownik najpierw przeciąga kursor myszy nad kontrolką podczas operacji przeciągania i upuszczania.

Uwaga

W wersjach starszych niż .NET Framework 2.0, jeśli umieścisz element UserControl z elementem DragEnter i DragDrop na formularzu systemu Windows, przeciągnij i upuść coś do UserControl elementu w czasie projektowania, zdarzenia DropDrop i DropEnter są zgłaszane. Jednak po zamknięciu i ponownym otwarciu rozwiązania DragEnter zdarzenia i DragDrop nie będą ponownie wywoływane.

Poniżej opisano, jak i kiedy są zgłaszane zdarzenia związane z operacjami przeciągania i upuszczania.

Metoda DoDragDrop określa kontrolkę pod bieżącą lokalizacją kursora. Następnie sprawdza, czy kontrolka jest prawidłowym elementem docelowym upuszczania.

Jeśli kontrolka jest prawidłowym elementem docelowym upuszczania, GiveFeedback zdarzenie jest wywoływane z określonym efektem przeciągania i upuszczania. Aby uzyskać listę efektów przeciągania i upuszczania, zobacz DragDropEffects wyliczenie.

Zmiany położenia kursora myszy, stanu klawiatury i stanu przycisku myszy są śledzone.

  • Jeśli użytkownik wyjecha z okna, DragLeave zdarzenie zostanie zgłoszone.

  • Jeśli mysz wprowadzi inną kontrolkę, dla tej kontrolki zostanie podniesiona DragEnter wartość .

  • Jeśli mysz porusza się, ale pozostaje w tej samej kontrolce, DragOver zdarzenie jest zgłaszane.

W przypadku zmiany stanu klawiatury lub przycisku myszy zdarzenie jest zgłaszane i określa, QueryContinueDrag czy kontynuować przeciąganie, upuszczać dane, czy anulować operację na podstawie wartości Action właściwości zdarzenia QueryContinueDragEventArgs.

  • Jeśli wartość DragAction to Continue, DragOver zdarzenie jest zgłaszane, aby kontynuować operację, a GiveFeedback zdarzenie jest zgłaszane z nowym efektem, aby można było ustawić odpowiednią opinię wizualną. Aby uzyskać listę prawidłowych efektów upuszczania, zobacz DragDropEffects wyliczenie.

    Uwaga

    Zdarzenia DragOver i GiveFeedback są sparowane tak, aby w miarę poruszania się myszą w miejscu docelowym upuszczania użytkownik otrzymuje najbardziej aktualne opinie na temat położenia myszy.

  • Jeśli wartość DragActionDropto , wartość efektu drop jest zwracana do źródła, więc aplikacja źródłowa może wykonać odpowiednią operację na danych źródłowych, na przykład wyciąć dane, jeśli operacja była przeniesieniem.

  • Jeśli wartość DragAction to Cancel, DragLeave zdarzenie jest zgłaszane.

    Uwaga

    Właściwości XDragEventArgs i Y obiektu znajdują się we współrzędnych ekranu, a nie współrzędnych klienta. Poniższy wiersz kodu Visual C# konwertuje właściwości na klienta Point.

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

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.

Dotyczy

Zobacz też