VB.NET-Tipp 0022: Aus der Oberklasse ein Ereignis auslösen
von Herfried Wagner
Beschreibung
Dieses Beispiel zeigt, wie man von einer Unterklasse aus ein in einer Oberklasse definiertes Ereignis auslösen kann.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2002/2003 ' Option Strict: An ' Option Explicit: An ' ' Referenzen: ' - System ' ' ############################################################################## ' ################################## Car.vb #################################### ' ############################################################################## Option Explicit On Option Strict On Option Compare Binary ' <remarks> ' Stellt ein Auto dar. ' </remarks> Public Class Car ' <summary> ' Ereignis, das eintritt, wenn das Auto ' einen Crash verursacht. ' </summary> ' <param name="sender">Objekt, das den Crash auslöst.</param> ' <param name="e">Informationen, die mit dem ' Crash verknüpft sind.</param> Public Event Crash( _ ByVal sender As Object, _ ByVal e As CrashEventArgs) ' <summary> ' Mache mit dem Auto einen Unfall mit ' gleich starkem "Gegner". ' </summary> Public Sub MakeCrashWithOtherCar() Dim e As New CrashEventArgs() e.PercentDamage = 50 RaiseEvent Crash(Me, e) End Sub ' <summary> ' Löst das Ereignis <c>Crash</c> mit den ' in den Parametern angebenenen Werten aus. ' </summary> ' <param name="sender">Objekt, das den Crash auslöst.</param> ' <param name="e">Informationen, die mit ' dem Crash verknüpft sind.</param> Public Sub OnCrash( _ ByVal sender As Object, _ ByVal e As CrashEventArgs) RaiseEvent Crash(sender, e) End Sub End Class ' ############################################################################## ' ############################# CrashEventArgs.vb ############################## ' ############################################################################## Option Explicit On Option Strict On Option Compare Binary Imports System ' <remarks> ' Stellt Informationen zu einem ' Crash zur Verfügung. ' </remarks> Public Class CrashEventArgs Inherits EventArgs ' Wert n, 0 <= n <= 100. Private m_intPercentDamage As Integer ' <summary> ' Erstellt eine neue Instanz der Klasse. ' </summary> Public Sub New() Me.PercentDamage = 0 End Sub ' <summary> ' Gibt den Schaden in Prozent an oder ' gibt ihn zurück. ' </summary> ' <value>Schaden in Prozent.</value> Public Property PercentDamage() As Integer Get Return m_intPercentDamage End Get Set(ByVal Value As Integer) m_intPercentDamage = Value End Set End Property End Class ' ############################################################################## ' ################################## Main.vb ################################### ' ############################################################################## Option Explicit On Option Strict On Option Compare Binary Imports System ' <remarks> ' Stellt den Einsprungspunkt ' der Anwendung bereit. ' </remarks> Public Class Main ' <summary> ' Der Einsprungspunkt der Anwendung. ' </summary> Public Shared Sub Main() Dim carBentley As New Car() AddHandler carBentley.Crash, AddressOf CrashHandler carBentley.MakeCrashWithOtherCar() RemoveHandler carBentley.Crash, AddressOf CrashHandler Dim truckMac As New Truck() AddHandler truckMac.Crash, AddressOf CrashHandler truckMac.MakeFullCrash() RemoveHandler truckMac.Crash, AddressOf CrashHandler End Sub Private Shared Sub CrashHandler( _ ByVal sender As Object, _ ByVal e As CrashEventArgs) Console.WriteLine("Ein Auto des Typs {0} hat " & _ " {1} Prozent Schaden.", _ sender.GetType().Name, _ e.PercentDamage) End Sub End Class ' ############################################################################## ' ################################# Truck.vb ################################### ' ############################################################################## Option Explicit On Option Strict On Option Compare Binary ' <remarks> ' Stellt einen Lastwagen dar. ' </remarks> Public Class Truck Inherits Car ' <summary> ' Bewirkt einen Totalschaden. ' </summary> Public Sub MakeFullCrash() Dim e As New CrashEventArgs() e.PercentDamage = 100 ' Kompilierungsfehler: Abgeleitete ' Klassen können keine Basisklassenereignisse ' auslösen. MyBase.OnCrash(Me, e) End Sub End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.