Přehled použití myši (Windows Forms .NET)
Příjem a zpracování vstupu myši je důležitou součástí každé aplikace systému Windows. Události myši můžete zpracovat a provést akci v aplikaci nebo pomocí informací o poloze myši provést testování nebo jiné akce. Můžete také změnit způsob, jakým ovládací prvky v aplikaci zpracovávají vstup myši. Tento článek podrobně popisuje tyto události myši a informace o tom, jak získat a změnit nastavení systému myši.
Ve Windows Forms se uživatelský vstup odesílá do aplikací ve formě zpráv systému Windows. Řada metod, které lze přepsat, zpracovává tyto zprávy na úrovni aplikace, formuláře a ovládacích prvků. Když tyto metody přijímají zprávy myši, vyvolávají události, které lze zpracovat, aby získaly informace o vstupu myši. V mnoha případech můžou aplikace Windows Forms zpracovávat všechny vstupy uživatelů jednoduše zpracováním těchto událostí. V jiných případech může aplikace přepsat jednu z metod, které zpracovávají zprávy, aby zachytily konkrétní zprávu před tím, než ji aplikace, formulář nebo ovládací prvek přijme.
Události myši
Všechny ovládací prvky Windows Forms dědí sadu událostí souvisejících se vstupem myši a klávesnice. Ovládací prvek může například zpracovat událost MouseClick a určit umístění kliknutí myší. Další informace o událostech myši naleznete v tématu Použití událostí myši.
Umístění myši a testování kolizí
Když uživatel přesune myš, operační systém přesune ukazatel myši. Ukazatel myši obsahuje jeden pixel, označovaný jako aktivní bod, který operační systém sleduje a rozpozná jako pozici ukazatele. Když uživatel přesune myš nebo stiskne tlačítko myši, Control obsahující HotSpot vyvolá příslušnou událost myši.
Aktuální pozici myši můžete získat při zpracování události myši pomocí vlastnosti Location objektu MouseEventArgs nebo pomocí vlastnosti Position třídy Cursor. Informace o poloze myši pak můžete použít k provádění hit-testů a pak provést akci na základě polohy myši. Hit-testování je integrováno do několika ovládacích prvků ve Windows Forms, jako jsou ListView, TreeView, MonthCalendar a DataGridView.
Používáte-li jej s příslušnou událostí myši, například MouseHover, je hit-testing velmi užitečný pro určení, kdy má vaše aplikace provést konkrétní akci.
Změna nastavení vstupu myši
Způsob, jakým ovládací prvek zpracovává vstup myši, můžete zjistit a změnit tak, že se odvozuje z ovládacího prvku a použije GetStyle a SetStyle metody. Metoda SetStyle používá bitovou kombinaci hodnot ControlStyles k určení, zda ovládací prvek bude mít standardní klikací nebo poklikávací chování, nebo zda si zpracování akcí myši zajistí sám. Třída SystemInformation také obsahuje vlastnosti, které popisují možnosti myši a určují způsob interakce myši s operačním systémem. Následující tabulka shrnuje tyto vlastnosti.
Vlastnost | Popis |
---|---|
DoubleClickSize | Získá rozměry v pixelech oblasti, ve které musí uživatel dvakrát kliknout, aby to operační systém považoval za dvojklik. |
DoubleClickTime | Získá maximální počet milisekund, které mohou uplynout mezi prvním kliknutím a druhým kliknutím pro akci myši, která má být považována za dvojité kliknutí. |
MouseButtons | Získá počet tlačítek myši. |
MouseButtonsSwapped | Vrátí hodnotu určující, zda byly funkce levého a pravého tlačítka myši prohozeny. |
MouseHoverSize | Získá rozměry v pixelech obdélníku, ve kterém musí ukazatel myši zůstat po dobu najetí myší, než se vygeneruje událost při najetí myší. |
MouseHoverTime | Získá čas v milisekundách, po kterou musí ukazatel myši zůstat v oblasti najetí myší před vygenerováním zprávy najetí myší. |
MousePresent | Získá hodnotu označující, zda je nainstalována myš. |
MouseSpeed | Získá hodnotu označující aktuální rychlost myši, od 1 do 20. |
MouseWheelPresent | Získá hodnotu označující, zda je nainstalována myš s kolečkem myši. |
MouseWheelScrollDelta | Získá velikost změny hodnoty při otočení kolečka myši. |
MouseWheelScrollLines | Získá počet řádků, které se mají posouvat při otáčení kolečka myši. |
Metody, které zpracovávají zprávy uživatelského vstupu
Formuláře a ovládací prvky mají přístup k rozhraní IMessageFilter a sadě přepisovatelných metod, které zpracovávají zprávy systému Windows v různých bodech ve frontě zpráv. Všechny tyto metody mají parametr Message, který zapouzdřuje podrobnosti zpráv systému Windows na nízké úrovni. Tyto metody můžete implementovat nebo přepsat, abyste zprávu prozkoumali a pak ji buď spotřebovali, nebo ji předali dalšímu příjemci ve frontě zpráv. Následující tabulka obsahuje metody, které zpracovávají všechny zprávy systému Windows v modelu Windows Forms.
Metoda | Poznámky |
---|---|
PreFilterMessage | Tato metoda zachytí zprávy Windows zařazené do fronty (označované také jako odeslané) na úrovni aplikace. |
PreProcessMessage | Tato metoda zachycuje zprávy systému Windows na úrovni formuláře a ovládacího prvku před jejich zpracováním. |
WndProc | Tato metoda zpracovává zprávy systému Windows na úrovni formuláře a ovládacího prvku. |
DefWndProc | Tato metoda provádí výchozí zpracování zpráv systému Windows na úrovni formuláře a ovládacího prvku. To poskytuje minimální funkčnost okna. |
OnNotifyMessage | Tato metoda zachycuje zprávy na úrovni formuláře a ovládacího prvku po jejich zpracování. Bit stylu EnableNotifyMessage musí být nastaven, aby byla tato metoda volána. |
Viz také
.NET Desktop feedback