Använda mushändelser (Windows Forms .NET)
De flesta Windows Forms-program bearbetar musindata genom att hantera mushändelserna. Den här artikeln innehåller en översikt över mushändelserna, inklusive information om när varje händelse ska användas och de data som anges för varje händelse. Mer information om händelser i allmänhet finns i översikten över händelser (Windows Forms .NET).
Mushändelser
Det primära sättet att svara på musindata är att hantera mushändelser. Följande tabell visar mushändelserna och beskriver när de utlöses.
Mushändelse | Beskrivning |
---|---|
Click | Den här händelsen inträffar när musknappen släpps, vanligtvis före händelsen MouseUp. Hanteraren för den här händelsen tar emot ett argument av typen EventArgs. Hantera den här händelsen när du bara behöver avgöra när ett klick inträffar. |
MouseClick | Den här händelsen inträffar när användaren klickar på kontrollen med musen. Hanteraren för den här händelsen tar emot ett argument av typen MouseEventArgs. Hantera den här händelsen när du behöver få information om musen när ett klick inträffar. |
DoubleClick | Den här händelsen inträffar när kontrollen dubbelklickas. Hanteraren för den här händelsen tar emot ett argument av typen EventArgs. Hantera den här händelsen när du bara behöver avgöra när ett dubbelklick inträffar. |
MouseDoubleClick | Den här händelsen inträffar när användaren dubbelklickar på kontrollen med musen. Hanteraren för den här händelsen tar emot ett argument av typen MouseEventArgs. Hantera den här händelsen när du behöver få information om musen när ett dubbelklick inträffar. |
MouseDown | Den här händelsen inträffar när muspekaren är över kontrollen och användaren trycker på en musknapp. Hanteraren för den här händelsen tar emot ett argument av typen MouseEventArgs. |
MouseEnter | Den här händelsen inträffar när muspekaren går in i kontrollens kantlinje eller klientområde, beroende på typ av kontroll. Hanteraren för den här händelsen tar emot ett argument av typen EventArgs. |
MouseHover | Den här händelsen inträffar när pekaren stoppas och vilar över kontrollen. Hanteraren för den här händelsen tar emot ett argument av typen EventArgs. |
MouseLeave | Den här händelsen inträffar när muspekaren lämnar kontrollens kantlinje eller klientområde, beroende på kontrollens typ. Hanteraren för den här händelsen tar emot ett argument av typen EventArgs. |
MouseMove | Den här händelsen inträffar när muspekaren flyttas medan den är över en kontroll. Hanteraren för den här händelsen tar emot ett argument av typen MouseEventArgs. |
MouseUp | Den här händelsen inträffar när muspekaren är över kontrollen och användaren släpper en musknapp. Hanteraren för den här händelsen tar emot ett argument av typen MouseEventArgs. |
MouseWheel | Den här händelsen inträffar när användaren roterar mushjulet medan kontrollen har fokus. Hanteraren för den här händelsen tar emot ett argument av typen MouseEventArgs. Du kan använda egenskapen Delta för MouseEventArgs för att avgöra hur långt musen har rullat. |
Musinformation
En MouseEventArgs skickas till hanterare av mushändelser relaterade till att klicka på en musknapp och spåra musrörelser. MouseEventArgs innehåller information om musens aktuella tillstånd, inklusive muspekarens plats i klientkoordinaterna, vilka musknappar som trycks ned och om mushjulet har rullat. Flera mushändelser, till exempel de som aktiveras när muspekaren har angett eller lämnat gränserna för en kontroll, skickar en EventArgs till händelsehanteraren utan ytterligare information.
Om du vill veta musknapparnas aktuella tillstånd eller muspekarens plats och du vill undvika att hantera en mushändelse kan du också använda egenskaperna MouseButtons och MousePosition för klassen Control. MouseButtons returnerar information om vilka musknappar som för närvarande trycks in. MousePosition returnerar skärmkoordinaterna för muspekaren och motsvarar värdet som returneras av Position.
Konvertera mellan skärm- och klientkoordinater
Eftersom viss information om musplats finns i klientkoordinater och vissa finns i skärmkoordinater kan du behöva konvertera en punkt från ett koordinatsystem till ett annat. Du kan enkelt göra detta med hjälp av de PointToClient- och PointToScreen metoder som är tillgängliga i klassen Control.
Standardbeteende vid klickhändelse
Om du vill hantera musklickshändelser i rätt ordning måste du känna till i vilken ordning klickhändelser genereras i Windows Forms-kontroller. Alla Windows Forms-kontroller genererar klickhändelser i samma ordning när en musknapp som stöds trycks ned och släpps, förutom där anges i följande lista för enskilda kontroller. I följande lista visas ordningen på händelser som genererats för ett enda musklick:
- MouseDown händelse.
- Click händelse.
- MouseClick händelse.
- MouseUp händelse.
Följande är ordningen på händelser som genereras för en dubbel musklickning:
MouseDown händelse.
Click händelse.
MouseClick händelse.
MouseUp händelse.
MouseDown händelse.
DoubleClick händelse.
Detta kan variera beroende på om kontrollen i fråga har StandardDoubleClick formatbit inställd på
true
. Mer information om hur du anger en ControlStyles bit finns i metoden SetStyle.MouseDoubleClick händelse.
MouseUp händelse.
Enskilda kontroller
Följande kontroller överensstämmer inte med standardbeteendet för musklickshändelsen:
-
Not
För den ComboBox kontrollen inträffar händelsebeteendet som beskrivs senare om användaren klickar på redigeringsfältet, knappen eller på ett objekt i listan.
- vänsterklicka på: Click, MouseClick
- Högerklicka: Inga klickhändelser registrerade
- Vänster dubbelklicka på: Click, MouseClick; Click, MouseClick
- Höger dubbelklick på: Inga klickhändelser genereras
TextBox, RichTextBox, ListBox, MaskedTextBoxoch CheckedListBox kontroller
Notera
Händelsebeteendet som beskrivs senare inträffar när användaren klickar var som helst i dessa kontroller.
- vänster klickar du på: Click, MouseClick
- Högerklick: Inga klickhändelser genererade
- Vänster dubbelklick: Click, MouseClick, DoubleClick, MouseDoubleClick
- Dubbelhögerklicka på: Inga klickhändelser har registrerats
ListView kontroll
Anmärkning
Händelsebeteendet som beskrivs senare inträffar bara när användaren klickar på objekten i ListView-kontrollen. Inga händelser aktiveras för klick någon annanstans på kontrollen. Förutom de händelser som beskrivs senare finns det BeforeLabelEdit och AfterLabelEdit händelser, vilket kan vara av intresse för dig om du vill använda validering med ListView kontroll.
- vänster klickar du på: Click, MouseClick
- Högerklicka på: Click, MouseClick
- Dubbelklicka vänster med: Click, MouseClick; DoubleClick, MouseDoubleClick
- Högerklicka på: Click, MouseClick; DoubleClick, MouseDoubleClick
TreeView kontroll
Notis
Händelsebeteendet som beskrivs senare inträffar bara när användaren klickar på själva objekten eller till höger om objekten i TreeView-kontrollen. Inga händelser aktiveras för klick någon annanstans på kontrollen. Förutom de som beskrivs senare finns det BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheckoch AfterLabelEdit händelser, vilket kan vara av intresse för dig om du vill använda validering med kontrollen TreeView.
- vänsterklicka på: ClickMouseClick
- Högerklicka på: Click, MouseClick
- Vänster dubbelklicka på: Click, MouseClick; DoubleClick, MouseDoubleClick
- Högerklicka på: Click, MouseClick; DoubleClick, MouseDoubleClick
Funktionssätt för att växla kontroller
Växlingskontroller, såsom kontroller härledda från ButtonBase-klassen, uppvisar följande distinkta visningsbeteende i kombination med musklickhändelser:
Användaren trycker på musknappen.
Kontrollfärgen appliceras när den är nedtryckt.
Händelsen MouseDown aktiveras.
Användaren släpper musknappen.
Kontrollen renderas i upphöjt läge.
Händelsen Click aktiveras.
Händelsen MouseClick aktiveras.
Händelsen MouseUp aktiveras.
Notis
Om användaren flyttar pekaren utanför växlingskontrollen medan musknappen är nedtryckt (till exempel att flytta musen från Button-kontrollen medan den håller nedtryckt) kommer växlingskontrollen att målas i uppfällt läge och endast MouseUp-händelsen inträffar. Händelserna Click eller MouseClick inträffar inte i den här situationen.
Se även
.NET Desktop feedback