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 Jak działa wprowadzanie za pomocą myszy w Windows Forms. Zobacz również Event Handlers Overview (Windows Forms) i Events Overview (Windows Forms).
Informacje o myszach
MouseEventArgs jest wysyłany do obsługujących zdarzenia związanych z kliknięciem przycisku i śledzeniem ruchu myszy. MouseEventArgs zawiera informacje o bieżącym stanie myszy, w tym lokalizację wskaźnika myszy we współrzędnych okna, naciśnięte przyciski myszy oraz to, czy kółko myszy zostało przewinięte. Kilka zdarzeń myszy, takich jak te, które po prostu powiadamiają, gdy wskaźnik myszy wszedł lub opuścił granice kontrolki, wysyła EventArgs do programu obsługi zdarzeń bez dalszych informacji.
Jeśli chcesz poznać bieżący stan przycisków myszy lub lokalizację wskaźnika myszy i chcesz uniknąć obsługi zdarzenia myszy, możesz również użyć właściwości MouseButtons i MousePosition klasy Control. MouseButtons zwraca informacje o tym, które przyciski myszy są obecnie naciskane. MousePosition zwraca współrzędne ekranu wskaźnika myszy i jest równoważne wartości zwracanej przez Position.
Konwertowanie współrzędnych ekranu i klienta
Ponieważ niektóre informacje o lokalizacji myszy są we współrzędnych klienta, a niektóre we współrzędnych ekranu, może być konieczne przekonwertowanie punktu z jednego systemu współrzędnych na drugi. Można to łatwo zrobić przy użyciu metod PointToClient i PointToScreen dostępnych w klasie Control.
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:
MouseDown zdarzenie.
Click zdarzenie.
MouseClick zdarzenie.
MouseUp zdarzenie.
Poniżej przedstawiono kolejność zdarzeń wywoływanych dla dwukrotnego kliknięcia przycisku myszy:
MouseDown Zdarzenie.
Click zdarzenie.
MouseClick zdarzenie.
MouseUp zdarzenie.
MouseDown zdarzenie.
Zdarzenie DoubleClick. (Może się to różnić w zależności od tego, czy w danej kontrolce ustawiono bit stylu StandardDoubleClick
true
. Aby uzyskać więcej informacji na temat ustawiania bitu ControlStyles, zobacz metodę SetStyle).MouseDoubleClick zdarzenie.
MouseUp zdarzenie.
Aby zapoznać się z przykładem kodu, który pokazuje kolejność zdarzeń kliknięcia myszy, zobacz 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:
-
Notatka
W przypadku kontrolki ComboBox zachowanie zdarzenia opisane później występuje, jeśli użytkownik kliknie pole edycji, przycisk lub element na liście.
Kliknij lewym przyciskiem myszy: Click, MouseClick
Kliknięcie prawym przyciskiem myszy: brak zgłoszonych zdarzeń kliknięcia
Kliknij dwukrotnie lewym przyciskiem myszy: Click, MouseClick; Click, MouseClick
Kliknij dwukrotnie prawym przyciskiem myszy: brak zgłoszonych zdarzeń kliknięcia
kontrolki TextBox, RichTextBox, ListBox, MaskedTextBoxi CheckedListBox
Notatka
Zachowanie zdarzenia opisane później występuje, gdy użytkownik kliknie w dowolnym miejscu tych kontrolek.
Kliknij lewym przyciskiem myszy: Click, MouseClick
Kliknięcie prawym przyciskiem myszy: brak zgłoszonych zdarzeń kliknięcia
Kliknij dwukrotnie lewym przyciskiem myszy: Click, MouseClick, DoubleClick, MouseDoubleClick
Podwójne kliknięcie prawym przyciskiem myszy: nie zgłoszono żadnych zdarzeń kliknięcia
kontrolka ListView
Notatka
Zachowanie zdarzenia opisane później występuje tylko wtedy, gdy użytkownik kliknie na elementy w kontrolce ListView. Żadne zdarzenia nie są wywoływane dla kliknięć w dowolnym miejscu w kontrolce. Oprócz opisanych później zdarzeń istnieją zdarzenia BeforeLabelEdit i AfterLabelEdit, które mogą cię zainteresować, jeśli chcesz użyć walidacji z kontrolką ListView.
Kliknij lewym przyciskiem myszy: Click, MouseClick
Kliknij prawym przyciskiem myszy: Click, MouseClick
Kliknij dwukrotnie lewym przyciskiem myszy: Click, MouseClick; DoubleClick, MouseDoubleClick
Kliknij dwukrotnie prawym przyciskiem myszy: Click, MouseClick; DoubleClick, MouseDoubleClick
kontrolka TreeView
Notatka
Zachowanie zdarzenia opisane później występuje tylko wtedy, gdy użytkownik kliknie na same elementy lub na prawo od elementów w kontrolce TreeView. Żadne zdarzenia nie są wywoływane dla kliknięć w dowolnym miejscu w kontrolce. Oprócz opisanych w dalszej części tego artykułu istnieją BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterChecki zdarzenia AfterLabelEdit, które mogą cię zainteresować, jeśli chcesz użyć walidacji z kontrolką TreeView.
Kliknij lewym przyciskiem myszy: Click, MouseClick
Kliknij prawym przyciskiem myszy: Click, MouseClick
Kliknij dwukrotnie lewym przyciskiem myszy: Click, MouseClick; DoubleClick, MouseDoubleClick
Kliknij dwukrotnie prawym przyciskiem myszy: Click, MouseClick; DoubleClick, MouseDoubleClick
Renderowanie wyglądu kontrolek przełącznika
Przełączane kontrolki, takie jak kontrolki pochodzące z klasy ButtonBase, mają następujące charakterystyczne zachowanie renderowania w połączeniu ze zdarzeniami kliknięcia myszy:
Użytkownik naciska przycisk myszy.
Kontrolka wyświetla się w stanie naciśniętym.
Zdarzenie MouseDown jest zgłaszane.
Użytkownik zwalnia przycisk myszy.
Kontrolka jest wyświetlana w stanie podniesionym.
Zdarzenie Click jest zgłaszane.
Zdarzenie MouseClick jest zgłaszane.
Zdarzenie MouseUp jest zgłaszane.
Notatka
Jeśli użytkownik przenosi wskaźnik z kontrolki przełącznika, gdy przycisk myszy jest wciśnięty (na przykład przesuwa mysz z kontrolki Button, gdy jest naciskany), kontrolka przełącznika będzie wyświetlana w stanie podniesionym i wystąpi tylko zdarzenie MouseUp. W tej sytuacji nie wystąpią zdarzenia Click lub MouseClick.
Zobacz też
.NET Desktop feedback