Używanie zdarzeń myszy (Windows Forms .NET)
Większość programów Windows Forms przetwarza wprowadzanie myszy przez obsługę zdarzeń myszy. Ten artykuł zawiera omówienie zdarzeń myszy, w tym szczegółowe informacje na temat tego, kiedy należy używać każdego zdarzenia i danych dostarczonych dla każdego zdarzenia. Aby uzyskać więcej informacji o zdarzeniach ogólnych, zobacz Omówienie zdarzeń (Windows Forms .NET).
Zdarzenia myszy
Podstawowym sposobem reagowania na dane wejściowe myszy jest obsługa zdarzeń myszy. W poniższej tabeli przedstawiono zdarzenia myszy i opisano, kiedy są one podniesione.
Zdarzenie myszy | opis |
---|---|
Click | To zdarzenie występuje, gdy przycisk myszy jest zwalniany, zazwyczaj przed zdarzeniem MouseUp . Procedura obsługi dla tego zdarzenia otrzymuje argument typu EventArgs. Obsłuż to zdarzenie, gdy musisz określić tylko, kiedy nastąpi kliknięcie. |
MouseClick | To zdarzenie występuje, gdy użytkownik kliknie kontrolkę myszą. Procedura obsługi dla tego zdarzenia otrzymuje argument typu MouseEventArgs. Obsłuż to zdarzenie, gdy musisz uzyskać informacje o myszy po kliknięciu. |
DoubleClick | To zdarzenie występuje po dwukrotnym kliknięciu kontrolki. Procedura obsługi dla tego zdarzenia otrzymuje argument typu EventArgs. Obsłuż to zdarzenie, gdy musisz określić, kiedy występuje dwukrotne kliknięcie. |
MouseDoubleClick | To zdarzenie występuje, gdy użytkownik dwukrotnie kliknie kontrolkę myszą. Procedura obsługi dla tego zdarzenia otrzymuje argument typu MouseEventArgs. Obsłuż to zdarzenie, gdy musisz uzyskać informacje o myszy po dwukrotnym kliknięciu. |
MouseDown | To zdarzenie występuje, gdy wskaźnik myszy jest nad kontrolką, a użytkownik naciska przycisk myszy. Procedura obsługi dla tego zdarzenia otrzymuje argument typu MouseEventArgs. |
MouseEnter | To zdarzenie występuje, gdy wskaźnik myszy przechodzi do obramowania lub obszaru klienta kontrolki, w zależności od typu kontrolki. Procedura obsługi dla tego zdarzenia otrzymuje argument typu EventArgs. |
MouseHover | To zdarzenie występuje, gdy wskaźnik myszy zatrzymuje się i spoczywa na kontrolce. Procedura obsługi dla tego zdarzenia otrzymuje argument typu EventArgs. |
MouseLeave | To zdarzenie występuje, gdy wskaźnik myszy opuszcza obramowanie lub obszar klienta kontrolki, w zależności od typu kontrolki. Procedura obsługi dla tego zdarzenia otrzymuje argument typu EventArgs. |
MouseMove | To zdarzenie występuje, gdy wskaźnik myszy przesuwa się, gdy znajduje się on nad kontrolką. Procedura obsługi dla tego zdarzenia otrzymuje argument typu MouseEventArgs. |
MouseUp | To zdarzenie występuje, gdy wskaźnik myszy jest nad kontrolką, a użytkownik zwalnia przycisk myszy. Procedura obsługi dla tego zdarzenia otrzymuje argument typu MouseEventArgs. |
MouseWheel | To zdarzenie występuje, gdy użytkownik obraca koło myszy, gdy kontrolka ma fokus. Procedura obsługi dla tego zdarzenia otrzymuje argument typu MouseEventArgs. Możesz użyć Delta właściwości , MouseEventArgs aby określić, jak daleko mysz przewijała. |
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 są podniesione, gdy wskaźnik myszy został wprowadzony lub pozostawiony granice kontrolki, wyślij element 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 dowolny obsługiwany przycisk myszy jest naciśnięty i zwalniany, 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 w danej kontrolce ustawiono StandardDoubleClick bit stylu na
true
wartość . Aby uzyskać więcej informacji na temat ustawiania bitów, zobacz metodę ControlStyles SetStyle .MouseDoubleClick zdarzenie.
MouseUp zdarzenie.
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