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:
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.
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
true
wartość . Aby uzyskać więcej informacji na temat ustawiania bitów ControlStyles , zobacz metodę SetStyle ).MouseDoubleClick Zdarzenie.
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:
-
Uwaga
W przypadku kontrolki ComboBox zachowanie zdarzenia szczegółowo 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, ; MouseClickClick,MouseClick
Kliknij dwukrotnie prawym przyciskiem myszy: brak zgłoszonych zdarzeń kliknięcia
TextBox, , RichTextBox, MaskedTextBoxListBox, i CheckedListBox kontrolek
Uwaga
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, DoubleClickMouseDoubleClick
Kliknij dwukrotnie prawym przyciskiem myszy: brak zgłoszonych zdarzeń kliknięcia
ListView kontrolka
Uwaga
Szczegółowe zachowanie zdarzenia występuje później tylko wtedy, gdy użytkownik kliknie elementy w kontrolce ListView . Żadne zdarzenia nie są wywoływane dla kliknięć w dowolnym miejscu w kontrolce. Oprócz opisanych później zdarzeń istnieją BeforeLabelEdit zdarzenia 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, ; MouseClickDoubleClick,MouseDoubleClick
Kliknij dwukrotnie prawym przyciskiem myszy: Click, ; MouseClickDoubleClick,MouseDoubleClick
TreeView kontrolka
Uwaga
Zachowanie zdarzenia szczegółowo opisane później występuje tylko wtedy, gdy użytkownik kliknie elementy samodzielnie lub po prawej stronie elementów w kontrolce TreeView . Żadne zdarzenia nie są wywoływane dla kliknięć w dowolnym miejscu w kontrolce. Oprócz tych opisanych później istnieją BeforeCheckzdarzenia , , BeforeSelect, BeforeLabelEditAfterSelect, AfterCheck, iAfterLabelEdit, 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, ; MouseClickDoubleClick,MouseDoubleClick
Kliknij dwukrotnie prawym przyciskiem myszy: Click, ; MouseClickDoubleClick,MouseDoubleClick
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:
Użytkownik naciska przycisk myszy.
Kontrolka maluje się w stanie naciśniętym.
Zdarzenie MouseDown jest zgłaszane.
Użytkownik zwalnia przycisk myszy.
Kontrolka maluje w stanie podniesionym.
Zdarzenie Click jest zgłaszane.
Zdarzenie MouseClick jest zgłaszane.
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ż
.NET Desktop feedback