Udostępnij przez


Omówienie korzystania z myszy

Odbieranie i obsługa danych wejściowych myszy jest ważną częścią każdej aplikacji systemu Windows. Możliwość obsługi zdarzeń myszy umożliwia wykonywanie akcji w aplikacji lub używanie informacji o lokalizacji myszy do wykonywania testów trafień lub innych działań. Ponadto możesz zmienić sposób, w jaki kontrolki w aplikacji obsługują wprowadzanie myszy. W tym artykule opisano szczegółowo te zdarzenia myszy oraz sposób uzyskiwania i zmieniania ustawień systemowych myszy.

W formularzach Windows Forms dane wejściowe użytkownika są wysyłane do aplikacji w postaci komunikatów systemu Windows . Seria metod zastępowalnych przetwarza te komunikaty na poziomie aplikacji, formularza i kontrolki. Gdy te metody odbierają komunikaty myszy, zgłaszają zdarzenia, które można obsłużyć, aby uzyskać informacje o danych wejściowych myszy. W wielu przypadkach aplikacje Windows Forms mogą przetwarzać wszystkie dane wejściowe użytkownika po prostu przez obsługę tych zdarzeń. W innych przypadkach aplikacja może zastąpić jedną z metod przetwarzania komunikatów w celu przechwycenia określonego komunikatu przed odebraniem przez aplikację, formularz lub kontrolkę.

Zdarzenia myszy

Wszystkie kontrolki Windows Forms dziedziczą zestaw zdarzeń związanych z wprowadzaniem myszy i klawiatury. Na przykład, kontrolka może obsłużyć zdarzenie MouseClick w celu określenia lokalizacji kliknięcia myszą. Aby uzyskać więcej informacji na temat zdarzeń myszy, zobacz Używanie zdarzeń myszy.

Lokalizacja myszy i testowanie trafień

Gdy użytkownik przesuwa mysz, system operacyjny przenosi wskaźnik myszy. Wskaźnik myszy zawiera jeden piksel, nazywany punktem gorącym, który system operacyjny śledzi i rozpoznaje jako pozycję wskaźnika. Gdy użytkownik przesuwa mysz lub naciska przycisk myszy, Control, który zawiera HotSpot, wywołuje odpowiednie zdarzenie myszy.

Aktualne położenie myszy można uzyskać za pomocą właściwości Location obiektu MouseEventArgs podczas obsługi zdarzenia myszy lub za pomocą właściwości Position klasy Cursor. Następnie można użyć informacji o lokalizacji myszy do przeprowadzenia testowania trafień, a następnie wykonać akcję na podstawie lokalizacji myszy. Funkcja testowania trafień jest wbudowana w kilka kontrolek w formularzach Windows, takich jak ListView, TreeView, MonthCalendar i DataGridView.

Hit-testing jest przydatne do określenia, kiedy aplikacja powinna wykonać konkretną akcję, gdy jest używane wraz z odpowiednim zdarzeniem myszy, takim jak MouseHover.

Zmienianie ustawień wprowadzania myszy

Możesz wykryć i zmienić sposób, w jaki kontrolka obsługuje dane wejściowe myszy, dziedzicząc z kontrolki i używając metod GetStyle i SetStyle. Metoda SetStyle przyjmuje bitową kombinację ControlStyles wartości, aby określić, czy kontrolka ma standardowe zachowanie przy kliknięciu i dwukrotnym kliknięciu, czy też samodzielnie obsługuje przetwarzanie myszy. SystemInformation Ponadto klasa zawiera właściwości, które opisują możliwości myszy i określają sposób interakcji myszy z systemem operacyjnym. Poniższa tabela zawiera podsumowanie tych właściwości.

Majątek Opis
DoubleClickSize Pobiera wymiary w pikselach obszaru, w którym użytkownik musi kliknąć dwa razy, aby system operacyjny rozważył dwa kliknięcia dwukrotnie.
DoubleClickTime Pobiera maksymalną liczbę milisekund, które mogą upłynąć między pierwszym kliknięciem a drugim kliknięciem, aby akcja myszy została uznana za dwukrotne kliknięcie.
MouseButtons Pobiera liczbę przycisków myszy.
MouseButtonsSwapped Pobiera wartość wskazującą, czy funkcje przycisków myszy po lewej i prawej stronie zostały zamienione.
MouseHoverSize Pobiera wymiary w pikselach prostokąta, w którym wskaźnik myszy musi pozostać przez czas najechania kursorem, zanim wygenerowany zostanie komunikat o najechaniu kursorem.
MouseHoverTime Pobiera czas (w milisekundach), przez jaki wskaźnik myszy musi pozostać w prostokącie najechania, zanim zostanie wygenerowany komunikat o najechaniu myszy.
MousePresent Pobiera wartość wskazującą, czy jest zainstalowana mysz.
MouseSpeed Pobiera wartość wskazującą bieżącą prędkość myszy z zakresu od 1 do 20.
MouseWheelPresent Pobiera wartość wskazującą, czy jest zainstalowana mysz z kółkiem myszy.
MouseWheelScrollDelta Pobiera wartość delta przyrostu pojedynczego obrotu kółkiem myszy.
MouseWheelScrollLines Pobiera liczbę wierszy do przewijania po obróceniu kółka myszy.

Metody przetwarzania komunikatów wejściowych użytkownika

Formularze i kontrolki mają dostęp do interfejsu IMessageFilter oraz zestawu metod, które można przesłonić i które przetwarzają komunikaty systemu Windows na różnych etapach w kolejce komunikatów. Wszystkie te metody mają parametr Message, który hermetyzuje szczegóły komunikatów systemu Windows niskiego poziomu. Można zaimplementować lub zastąpić te metody, aby zbadać komunikat, a potem przetworzyć go lub przekazać do następnego konsumenta w kolejce. W poniższej tabeli przedstawiono metody przetwarzania wszystkich komunikatów systemu Windows w formularzach Windows Forms.

Metoda Notatki
PreFilterMessage Ta metoda przechwytuje umieszczone w kolejce (znane również jako wysłane) komunikaty systemu Windows na poziomie aplikacji.
PreProcessMessage Ta metoda przechwytuje komunikaty systemu Windows na poziomie formularza i kontrolki przed ich przetworzeniem.
WndProc Ta metoda przetwarza komunikaty systemu Windows na poziomie formularza i kontrolki.
DefWndProc Ta metoda wykonuje domyślne przetwarzanie komunikatów systemu Windows na poziomie formularza i kontrolki. Zapewnia to minimalną funkcjonalność okna.
OnNotifyMessage Ta metoda przechwytuje komunikaty na poziomie formularza i kontrolki po ich przetworzeniu. Bit stylu EnableNotifyMessage musi być ustawiony, aby wywołać tę metodę.

Zobacz także