Dela via


Mushändelser i Windows-formulär

När du hanterar musindata vill du vanligtvis veta platsen för muspekaren och musknapparnas tillstånd. Det här avsnittet innehåller information om hur du hämtar den här informationen från mushändelser och förklarar i vilken ordning musklickshändelser genereras i Windows Forms-kontroller. En lista och en beskrivning av alla mushändelser finns i How Mouse Input Works in Windows Forms. Se även Översikt över händelsehanterare (Windows Forms) och Events Overview (Windows Forms).

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 bara meddelar 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.

Beteende vid standardklickhä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 trycks ned och släpps (oavsett vilken musknapp), 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:

  1. MouseDown händelse.

  2. Click händelse.

  3. MouseClick händelse.

  4. MouseUp händelse.

Följande är ordningen på händelser som genereras för en dubbel musklickning:

  1. MouseDown händelse.

  2. Click händelse.

  3. MouseClick händelse.

  4. MouseUp händelse.

  5. MouseDown händelse.

  6. 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.)

  7. MouseDoubleClick händelse.

  8. MouseUp händelse.

Ett kodexempel som visar ordningen på musklickshändelser finns i How to: Handle User Input Events in Windows Forms Controls.

Enskilda kontroller

Följande kontroller överensstämmer inte med standardbeteendet för musklickshändelsen:

Målningsbeteende hos växlingskontroller

Växlingskontroller, såsom de kontroller som härstammar från ButtonBase-klassen, har följande distinkta renderingsbeteende vid kombination med musklikks-händelser:

  1. Användaren trycker på musknappen.

  2. Kontroll visas i tryckt läge.

  3. Händelsen MouseDown aktiveras.

  4. Användaren släpper musknappen.

  5. Kontrollen målas i ett upphöjt läge.

  6. Händelsen Click aktiveras.

  7. Händelsen MouseClick aktiveras.

  8. Händelsen MouseUp aktiveras.

    Notis

    Om användaren flyttar pekaren från växlingskontrollen medan musknappen är nere (till exempel att flytta musen från Button kontroll medan den trycks ned) kommer växlingskontrollen att målas i upphöjt tillstånd och endast den MouseUp händelsen inträffar. Händelserna Click eller MouseClick inträffar inte i den här situationen.

Se även