Události myši ve Windows Forms
Při zpracování vstupu myši obvykle chcete znát umístění ukazatele myši a stav tlačítek myši. Toto téma obsahuje podrobnosti o tom, jak získat tyto informace z událostí myši a vysvětluje pořadí událostí kliknutí myší v ovládacích prvcích Windows Forms. Seznam a popis všech událostí myši naleznete v tématu Jak funguje vstup myši ve Windows Forms. Viz také přehled obslužných rutin událostí (Windows Forms) a přehled událostí (Windows Forms).
Informace o myši
MouseEventArgs se odešle obslužným funkcím událostí myši souvisejících s kliknutím na tlačítko myši a sledováním pohybu myši. MouseEventArgs poskytuje informace o aktuálním stavu myši, včetně umístění ukazatele myši v souřadnicích klienta, která tlačítka myši jsou stisknuta a zda se kolečko myši posune. Několik událostí myši, například těch, které jednoduše upozorňují, když ukazatel myši vstoupil do ovládacího prvku nebo opustil hranice ovládacího prvku, odešle EventArgs obslužné rutině události bez dalších informací.
Pokud chcete znát aktuální stav tlačítek myši nebo umístění ukazatele myši a chcete se vyhnout zpracování události myši, můžete také použít MouseButtons a MousePosition vlastnosti třídy Control. MouseButtons vrátí informace o tom, která tlačítka myši jsou aktuálně stisknuta. MousePosition vrátí souřadnice obrazovky ukazatele myši a odpovídá hodnotě vrácené Position.
Převod mezi obrazovkovými a klientskými souřadnicemi
Protože některé informace o poloze myši jsou v souřadnicích klienta a některé jsou v souřadnicích obrazovky, může být nutné převést bod z jednoho souřadnicového systému na druhý. Můžete to snadno provést pomocí PointToClient a PointToScreen metod dostupných ve třídě Control.
Chování události standardního kliknutí
Pokud chcete zpracovat události kliknutí myší ve správném pořadí, musíte znát pořadí, ve kterém jsou události kliknutí vyvolány v ovládacích prvcích Windows Forms. Všechny ovládací prvky Windows Forms vyvolávají události kliknutí ve stejném pořadí, když je tlačítko myši stisknuto a uvolněno (bez ohledu na to, které tlačítko myši), s výjimkou místa, kde je uvedeno v následujícím seznamu pro jednotlivé ovládací prvky. Následující seznam ukazuje pořadí událostí vyvolaných jedním kliknutím na tlačítko myši:
MouseDown událost.
Click událost.
MouseClick událost.
MouseUp událost.
Toto je pořadí událostí vyvolaných pro dvojité kliknutí na tlačítko myši:
MouseDown událost.
Click událost.
MouseClick událost.
MouseUp událost.
MouseDown událost.
DoubleClick událost. (To se může lišit v závislosti na tom, jestli má příslušný ovládací prvek StandardDoubleClick bit nastaven na
true
. Další informace o nastavení ControlStyles bitu najdete v metodě SetStyle.)MouseDoubleClick událost.
MouseUp událost.
Příklad kódu, který ukazuje pořadí událostí kliknutí myší, naleznete v tématu Postupy: Zpracování událostí uživatelského vstupu v ovládacích prvcích Windows Forms.
Jednotlivé ovládací prvky
Následující ovládací prvky neodpovídají standardnímu chování události kliknutí myší:
-
Poznámka
U ovládacího prvku ComboBox se chování události podrobně popisuje později, pokud uživatel klikne na pole pro úpravy, tlačítko nebo položku v seznamu.
Levé kliknutí: Click, MouseClick
Kliknutí pravým tlačítkem myši: Nevyvolá se žádné události kliknutí
Levý dvojklik: Click, MouseClick; Click, MouseClick
Dvojklik pravým tlačítkem myši: Nevyvolají se žádné události kliknutí
ovládací prvky TextBox, RichTextBox, ListBox, MaskedTextBoxa CheckedListBox
Poznámka
Chování události nastane, když uživatel klikne kamkoli na tyto ovládací prvky, jak bude později podrobně popsáno.
Levé kliknutí: Click, MouseClick
Kliknutí pravým tlačítkem myši: Nevyvolá se žádné události kliknutí
Dvojklik levým tlačítkem: Click, MouseClick, DoubleClick, MouseDoubleClick
Poklikání pravým tlačítkem myši: Nevyvolá se žádné události kliknutí
ovládací prvek ListView
Poznámka
Chování události podrobně popsané později nastane pouze v případě, že uživatel klikne na položky v ovládacím prvku ListView. Nejsou vyvolány žádné události pro kliknutí kdekoli jinde v ovládacím prvku. Kromě události popsané později zde jsou i události BeforeLabelEdit a AfterLabelEdit, které by vás mohly zajímat, pokud chcete použít ověřování pomocí ovládacího prvku ListView.
Levé kliknutí: Click, MouseClick
Kliknutí pravým tlačítkem myši: Click, MouseClick
Levém dvojkliku: Click, MouseClick; DoubleClick, MouseDoubleClick
Poklikejte pravým tlačítkem myši: Click, MouseClick; DoubleClick, MouseDoubleClick
ovládací prvek TreeView
Poznámka
Chování události podrobně popsané později nastane pouze v případě, že uživatel klikne na samotné položky nebo napravo od položek v ovládacím prvku TreeView. Nejsou vyvolány žádné události pro kliknutí kdekoli jinde v ovládacím prvku. Kromě těch, které jsou popsány později, existují události BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterChecka AfterLabelEdit, které vás mohou zajímat, pokud chcete použít ověřování s prvkem TreeView.
Levé kliknutí: Click, MouseClick
Kliknutí pravým tlačítkem myši: Click, MouseClick
Levé dvojité kliknutí: Click, MouseClick; DoubleClick, MouseDoubleClick
Poklikejte pravým tlačítkem myši: Click, MouseClick; DoubleClick, MouseDoubleClick
Malování chování přepínacích ovládacích prvků
Přepínací ovládací prvky, například ovládací prvky odvozené z třídy ButtonBase, mají v kombinaci s událostmi kliknutí myší následující výrazné chování během vykreslování:
Uživatel stiskne tlačítko myši.
Ovládací prvek se vykreslí ve stisknutém stavu.
Událost MouseDown je vyvolána.
Uživatel uvolní tlačítko myši.
Ovládací prvek se vykreslí ve vyvýšeném stavu.
Událost Click je vyvolána.
Událost MouseClick je vyvolána.
Událost MouseUp byla vyvolána.
Poznámka
Pokud uživatel přesune ukazatel mimo ovládací prvek přepínacího tlačítka, zatímco je stisknuté tlačítko myši (například přesunutí myši mimo ovládací prvek Button, když je stisknutý), přepínací ovládací prvek se vykreslí ve vyvýšeném stavu a dojde pouze k události MouseUp. V této situaci nedojde k událostem Click nebo MouseClick.
Viz také
.NET Desktop feedback