Omówienie korzystania z myszy (Windows Forms .NET)

Odbieranie i obsługa danych wejściowych myszy jest ważną częścią każdej aplikacji systemu Windows. Zdarzenia myszy umożliwiają wykonywanie akcji w aplikacji lub używanie informacji o lokalizacji myszy do przeprowadzania testów trafień lub innych akcji. 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.

Ważne

Dokumentacja przewodnika dla komputerów dla platform .NET 7 i .NET 6 jest w budowie.

W formularzach Systemu Windows 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ć MouseClick zdarzenie 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 element zawierający HotSpot podnosi odpowiednie zdarzenie myszy.

Możesz uzyskać bieżącą pozycję myszy z właściwością LocationMouseEventArgs podczas obsługi zdarzenia myszy lub za pomocą Position właściwości Cursor klasy. 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 systemu Windows, takich jak ListView, TreeViewMonthCalendar i DataGridView .

Używane z odpowiednim zdarzeniem myszy, MouseHover na przykład testowanie trafień jest bardzo przydatne do określania, kiedy aplikacja powinna wykonać określoną akcję.

Zmienianie ustawień wprowadzania myszy

Możesz wykryć i zmienić sposób obsługi danych wejściowych myszy przez kontrolkę, wyprowadzając z kontrolki i przy użyciu GetStyle metod i SetStyle . Metoda SetStyle przyjmuje bitową kombinację ControlStyles wartości, aby określić, czy kontrolka będzie miała standardowe kliknięcie, dwukrotne kliknięcie, czy kontrolka będzie obsługiwać własne 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.

Właściwości 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ć na czas aktywowania myszy przed wygenerowaniem komunikatu myszy.
MouseHoverTime Pobiera czas ( w milisekundach), że wskaźnik myszy musi pozostać w prostokątze aktywowania, zanim zostanie wygenerowany komunikat 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ść różnicową inkrementacji 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 przetwarzają komunikaty systemu Windows w różnych punktach kolejki komunikatów. Wszystkie te metody mają Message parametr, który hermetyzuje szczegóły komunikatów systemu Windows niskiego poziomu. Można zaimplementować lub zastąpić te metody, aby zbadać komunikat, a następnie użyć komunikatu lub przekazać go do następnego konsumenta w kolejce komunikatów. W poniższej tabeli przedstawiono metody przetwarzania wszystkich komunikatów systemu Windows w formularzach Windows Forms.

Metoda Uwagi
PreFilterMessage Ta metoda przechwytuje komunikaty systemu Windows umieszczone w kolejce (znane również jako opublikowane) 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. Aby EnableNotifyMessage wywołać tę metodę, należy ustawić bit stylu.

Zobacz też