Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een gebeurtenis is een actie die u in code kunt beantwoorden of 'verwerken'. Gebeurtenissen worden meestal gegenereerd door een gebruikersactie, zoals klikken op de muis of op een toets drukken, maar ze kunnen ook worden gegenereerd door programmacode of door 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 reageren. Als een van deze gebeurtenissen wordt gegenereerd en er een bijbehorende gebeurtenis-handler is, wordt de handler aangeroepen en wordt de code uitgevoerd.
De typen gebeurtenissen die door een object worden gegenereerd, variëren, maar veel typen zijn gebruikelijk voor de meeste besturingselementen. De meeste objecten hebben bijvoorbeeld een Click gebeurtenis die wordt gegenereerd wanneer een gebruiker erop klikt.
Opmerking
Veel gebeurtenissen vinden plaats 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 gebeurtenissen in .NET voor algemene 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 evenementmeldingen 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. Een knopklikgebeurtenis en een menuopdrachtklikgebeurtenis kunnen beide dezelfde gedelegeerde aanroepen, die vervolgens één methode oproept om deze gebeurtenissen op dezelfde wijze 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.
Gebeurtenissen in Windows Forms
Gebeurtenissen in Windows Forms worden gedeclareerd met de EventHandler<TEventArgs> delegate voor methoden van handlers. Elke gebeurtenis-handler biedt twee parameters waarmee u de gebeurtenis correct kunt verwerken. In het volgende voorbeeld ziet u een gebeurtenis-handler voor een Button-gebeurtenis van een Click-besturingselement.
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
End Sub
private void button1_Click(object sender, System.EventArgs e)
{
}
De eerste parameter,sender
, bevat een verwijzing naar het object dat de gebeurtenis heeft gegenereerd. Met de tweede parameter wordt e
een object doorgegeven dat specifiek is voor de gebeurtenis die wordt verwerkt. Door te verwijzen naar de eigenschappen van het object (en soms de bijbehorende methoden), kunt u informatie verkrijgen, zoals de locatie van de muis voor muisgebeurtenissen of gegevens die worden overgebracht in slepen en neerzetten.
Normaal gesproken produceert elke gebeurtenis een gebeurtenis-handler met een ander gebeurtenisobjecttype voor de tweede parameter. Sommige gebeurtenis-handlers, zoals die voor de MouseDown en MouseUp gebeurtenissen, hebben hetzelfde objecttype voor hun tweede parameter. Voor deze typen gebeurtenissen kunt u dezelfde gebeurtenis-handler gebruiken om beide gebeurtenissen af te handelen.
U kunt dezelfde gebeurtenishandler ook gebruiken om dezelfde gebeurtenis voor verschillende besturingselementen te verwerken. Als u bijvoorbeeld een groep RadioButton besturingselementen op een formulier hebt, kunt u één gebeurtenis-handler maken voor de Click gebeurtenis van elke RadioButton
. Zie Een besturings gebeurtenis afhandelen voor meer informatie.
Verwante inhoud
.NET Desktop feedback