Overzicht van gebeurtenissen (Windows Forms .NET)
Een gebeurtenis is een actie die u in code kunt beantwoorden of 'verwerken'. Gebeurtenissen kunnen worden gegenereerd door een gebruikersactie, zoals klikken op de muis of op een toets drukken, op programmacode of op het systeem.
Gebeurtenisgestuurde toepassingen voeren code uit als reactie op een gebeurtenis. Elk formulier en besturingselement bevat een vooraf gedefinieerde set gebeurtenissen waarop u kunt programmeren. Als een van deze gebeurtenissen optreedt en er code is voor een gekoppelde gebeurtenis-handler, wordt die code aangeroepen.
De typen gebeurtenissen die door een object worden gegenereerd, variëren, maar veel typen zijn gebruikelijk voor de meeste besturingselementen. De meeste objecten verwerken bijvoorbeeld een Click gebeurtenis. Als een gebruiker op een formulier klikt, wordt code in de Click gebeurtenis-handler van het formulier uitgevoerd.
Notitie
Veel gebeurtenissen vinden plaats in combinatie met andere gebeurtenissen. In de loop van de DoubleClick gebeurtenis die zich voordoet, vinden bijvoorbeeld de MouseDown, MouseUpen Click gebeurtenissen plaats.
Zie Afhandeling en het genereren van gebeurtenissenvoor meer informatie over het genereren en gebruiken van een gebeurtenis.
Gemachtigden en hun rol
Gedelegeerden zijn klassen die vaak worden gebruikt in .NET om mechanismen voor gebeurtenisafhandeling te bouwen. Delegaten zijn vrijwel gelijk aan functieverwijzingen, die vaak worden gebruikt in Visual C++ en andere objectgeoriënteerde programmeertalen. In tegenstelling tot functiewijzers zijn delegeren echter objectgeoriënteerd, typveilig en veilig. Wanneer een functieaanwijzer alleen een verwijzing naar een bepaalde functie bevat, bestaat een gedelegeerde uit een verwijzing naar een object en verwijzingen naar een of meer methoden binnen het object.
Dit gebeurtenismodel gebruikt gemachtigden om gebeurtenissen te binden aan de methoden die worden gebruikt om ze te verwerken. Met de delegate kunnen andere klassen zich registreren voor eventmeldingen door een handlermethode op te geven. Wanneer de gebeurtenis plaatsvindt, roept de gedelegeerde de gebonden methode aan. Voor meer informatie over het definiëren van gedelegeerden, zie Het verwerken en het afhandelen van gebeurtenissen.
Gemachtigden kunnen worden gebonden aan één methode of aan meerdere methoden, ook wel multicasting genoemd. Wanneer u een delegaat voor een gebeurtenis maakt, maakt u doorgaans een multicast-evenement. Een zeldzame uitzondering kan een gebeurtenis zijn die resulteert in een specifieke procedure (zoals het weergeven van een dialoogvenster) die niet logisch meerdere keren per gebeurtenis zou worden herhaald. Zie How to combine delegates (Multicast Delegates)voor meer informatie over het maken van een multicastdelegatie.
Een multicast-gemachtigde onderhoudt een aanroeplijst met de methoden waaraan deze is gebonden. De multicast-gemachtigde ondersteunt een Combine methode om een methode toe te voegen aan de aanroeplijst en een Remove methode om deze te verwijderen.
Wanneer de toepassing een gebeurtenis vastlegt, veroorzaakt het besturingselement de gebeurtenis door de gedelegeerde voor die gebeurtenis aan te roepen. De gedelegeerde roept op zijn beurt de gebonden methode aan. In het meest voorkomende geval (een multicastdelegatie) roept de gedelegeerde elke afhankelijke methode aan in de aanroeplijst, die een een-op-veel-melding biedt. Deze strategie betekent dat het besturingselement geen lijst met doelobjecten hoeft te onderhouden voor gebeurtenismeldingen. De gedelegeerde verwerkt alle registratie en meldingen.
Gedelegeerden zorgen er ook voor dat meerdere gebeurtenissen aan dezelfde methode worden gebonden, waardoor een veel-op-een-melding wordt toegestaan. Bijvoorbeeld, een klikgebeurtenis van een knop en een klikgebeurtenis van een menu-opdracht kunnen beide dezelfde gedelegeerde aanroepen, die vervolgens een enkele methode oproept om deze afzonderlijke gebeurtenissen op dezelfde manier af te handelen.
Het bindingsmechanisme dat wordt gebruikt met gemachtigden is dynamisch: een gemachtigde kan tijdens runtime worden gebonden aan elke methode waarvan de handtekening overeenkomt met die van de gebeurtenis-handler. Met deze functie kunt u de gebonden methode instellen of wijzigen, afhankelijk van een voorwaarde, en een gebeurtenis-handler dynamisch koppelen aan een controle-element.
Zie ook
.NET Desktop feedback