Zdarzenia myszy w formularzach systemu Windows

W przypadku obsługi wprowadzania myszy zwykle chcesz znać lokalizację wskaźnika myszy i stan przycisków myszy. Ten temat zawiera szczegółowe informacje na temat pobierania tych informacji ze zdarzeń myszy oraz objaśnienie kolejności, w jakiej zdarzenia kliknięcia myszy są wywoływane w kontrolkach Windows Forms. Aby zapoznać się z listą i opisem wszystkich zdarzeń myszy, zobacz How Mouse Input Works in Windows Forms (Jak działa wprowadzanie myszy w formularzach systemu Windows). Zobacz również Omówienie procedur obsługi zdarzeń (Formularze systemu Windows) i Zdarzenia — omówienie (Formularze systemu Windows).

Informacje o myszach

Element jest MouseEventArgs wysyłany do procedur obsługi zdarzeń myszy związanych z kliknięciem przycisku myszy i śledzeniem ruchów myszy. MouseEventArgs Zawiera informacje o bieżącym stanie myszy, w tym o lokalizacji wskaźnika myszy we współrzędnych klienta, które przyciski myszy są naciskane i czy kółko myszy przewijane. Kilka zdarzeń myszy, takich jak te, które po prostu powiadamiają o wejściu wskaźnika myszy lub opuściły granice kontrolki, wysyłają do EventArgs programu obsługi zdarzeń bez dalszych informacji.

Jeśli chcesz znać bieżący stan przycisków myszy lub lokalizację wskaźnika myszy i chcesz uniknąć obsługi zdarzenia myszy, możesz również użyć MouseButtons właściwości Control i MousePosition klasy . MouseButtons Zwraca informacje o tym, które przyciski myszy są obecnie naciskane. Funkcja MousePosition zwraca współrzędne ekranu wskaźnika myszy i jest równoważna wartości zwracanej przez Positionelement .

Konwertowanie współrzędnych ekranu i klienta

Ponieważ niektóre informacje o lokalizacji myszy są we współrzędnych klienta, a niektóre są współrzędne ekranu, może być konieczne przekonwertowanie punktu z jednego układu współrzędnych na drugi. Można to łatwo zrobić przy użyciu PointToClient metod i PointToScreen dostępnych w Control klasie .

Zachowanie zdarzenia standardowego kliknięcia

Jeśli chcesz obsługiwać zdarzenia kliknięcia myszy w odpowiedniej kolejności, musisz znać kolejność, w jakiej zdarzenia kliknięć są wywoływane w kontrolkach Windows Forms. Wszystkie kontrolki Windows Forms zgłaszają zdarzenia kliknięcia w tej samej kolejności, gdy przycisk myszy jest naciśnięty i zwalniany (niezależnie od tego, który przycisk myszy), z wyjątkiem sytuacji, w których zaznaczono na poniższej liście poszczególnych kontrolek. Na poniższej liście przedstawiono kolejność zdarzeń zgłoszonych dla jednego kliknięcia przycisku myszy:

  1. MouseDown Zdarzenie.

  2. Click Zdarzenie.

  3. MouseClick Zdarzenie.

  4. MouseUp Zdarzenie.

Poniżej przedstawiono kolejność zdarzeń wywoływanych dla dwukrotnego kliknięcia przycisku myszy:

  1. MouseDown Zdarzenie.

  2. Click Zdarzenie.

  3. MouseClick Zdarzenie.

  4. MouseUp Zdarzenie.

  5. MouseDown Zdarzenie.

  6. DoubleClick Zdarzenie. (Może się to różnić w zależności od tego, czy kontrolka, o których mowa, ma StandardDoubleClick bit stylu ustawiony na truewartość . Aby uzyskać więcej informacji na temat ustawiania bitów ControlStyles , zobacz metodę SetStyle ).

  7. MouseDoubleClick Zdarzenie.

  8. MouseUp Zdarzenie.

Przykładowy kod przedstawiający kolejność zdarzeń kliknięcia myszy można znaleźć w temacie How to: Handle User Input Events in Windows Forms Controls (Instrukcje: obsługa zdarzeń wejściowych użytkownika w kontrolkach formularzy systemu Windows).

Poszczególne kontrolki

Następujące kontrolki nie są zgodne ze standardowym zachowaniem zdarzenia kliknięcia myszy:

Malowanie zachowania kontrolek przełącznika

Przełącz kontrolki, takie jak kontrolki pochodzące z klasy, mają następujące charakterystyczne zachowanie malowania w połączeniu ButtonBase ze zdarzeniami kliknięcia myszy:

  1. Użytkownik naciska przycisk myszy.

  2. Kontrolka maluje się w stanie naciśniętym.

  3. Zdarzenie MouseDown jest zgłaszane.

  4. Użytkownik zwalnia przycisk myszy.

  5. Kontrolka maluje w stanie podniesionym.

  6. Zdarzenie Click jest zgłaszane.

  7. Zdarzenie MouseClick jest zgłaszane.

  8. Zdarzenie MouseUp jest zgłaszane.

    Uwaga

    Jeśli użytkownik przenosi wskaźnik z kontrolki przełącznika, gdy przycisk myszy jest wyłączony (na przykład przesuwając mysz poza Button kontrolkę, gdy jest naciśnięty), kontrolka przełącznika będzie malować w stanie podniesionym i występuje tylko MouseUp zdarzenie. Zdarzenia Click lub MouseClick nie wystąpią w tej sytuacji.

Zobacz też