Dela via


Översikt över händelser (Windows-formulär)

En händelse är en åtgärd som du kan svara på eller "hantera" i kod. Händelser kan genereras av en användaråtgärd, till exempel genom att klicka på musen eller trycka på en nyckel. efter programkod; eller av systemet.

Händelsedrivna program kör kod som svar på en händelse. Varje formulär och kontroll exponerar en fördefinierad uppsättning händelser som du kan programmera mot. Om en av dessa händelser inträffar och det finns kod i den associerade händelsehanteraren anropas koden.

De typer av händelser som genereras av ett objekt varierar, men många typer är gemensamma för de flesta kontroller. De flesta objekt hanterar till exempel en Click händelse. Om en användare klickar på ett formulär körs kod i formulärets Click händelsehanterare.

Anteckning

Många händelser inträffar tillsammans med andra händelser. Under den DoubleClick händelse som inträffar inträffar till exempel MouseDown, MouseUpoch Click händelser.

Information om hur du utlöser och använder en händelse finns i Händelser.

Ombud och deras roll

Ombud är klasser som ofta används i .NET Framework för att skapa mekanismer för händelsehantering. Delegater motsvarar ungefär funktionspekare och används ofta i Visual C++ och andra objektorienterade språk. Till skillnad från funktionspekare är delegater dock objektorienterade, typsäkra och säkra. Dessutom, där en funktionspekare innehåller endast en referens till en viss funktion, består en delegat av en referens till ett objekt och referenser till en eller flera metoder inom objektet.

Den här händelsemodellen använder ombud för att binda händelser till de metoder som används för att hantera dem. Ombudet gör det möjligt för andra klasser att registrera sig för händelsemeddelanden genom att ange en hanteringsmetod. När händelsen inträffar, anropar delegaten den bundna metoden. Mer information om hur du definierar ombud finns i Händelser.

Ombud kan bindas till en enda metod eller till flera metoder, som kallas multicasting. När du skapar ett ombud för en händelse skapar du (eller Windows) vanligtvis en multicast-händelse. Ett sällsynt undantag kan vara en händelse som resulterar i en specifik procedur (till exempel att visa en dialogruta) som inte upprepas logiskt flera gånger per händelse. Information om hur du skapar en multicastdelegering finns i Hur man kombinerar delegeringar (Multicastdelegeringar).

Ett multicast-ombud har en anropslista över de metoder som den är bunden till. Multicast-ombudet stöder en Combine metod för att lägga till en metod i listan över anrop och en Remove metod för att ta bort den.

När en händelse registreras av programmet genererar kontrollen händelsen genom att anropa ombudet för händelsen. Ombudet anropar i sin tur den bundna metoden. I det vanligaste fallet (en multicast-delegat) anropar delegaten varje bunden metod i anropslistan i tur och ordning, vilket ger en en-till-många-notifikation. Den här strategin innebär att kontrollen inte behöver underhålla en lista över målobjekt för händelsemeddelande – ombudet hanterar all registrering och alla meddelanden.

Delegater gör också att flera händelser kan bindas till samma metod, vilket tillåter en många-till-en-notifiering. Till exempel kan en knappklickshändelse och en menykommandoklickshändelse både anropa samma delegat, som sedan anropar en gemensam metod för att hantera dessa händelser likadant.

Bindningsmekanismen som används med ombud är dynamisk: ett ombud kan vid körning bindas till alla metoder vars signatur matchar händelsehanterarens. Med den här funktionen kan du konfigurera eller ändra den bundna metoden beroende på ett villkor och dynamiskt koppla en händelsehanterare till en kontroll.

Se även