Ereignis in Basisklasse in abgeleitete Klasse weiterreichen

30/11/2007 - 14:14 von Peter Gast | Report spam
Hallo
wenn sich in der Basisklasse eine bestimmte Eigenschaft àndert, möchte ich
dieses Ergeignis in der abgeleiteten Klasse erfassen, um etwas zu tun. Ich
habe in der Basisklasse ein Ereignis definiert, aber weiß jetzt nicht wie
ich in der abgeleiteten Klasse (KlasseAbgeleitet) dieses abfange.


Public MustInherit Class Basis
Public Event Name_Changed()

Private _Name As String = ""
Public Property Name() As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
RaiseEvent Name_Changed()
End Set
End Property
...
End Class


Public MustInherit Class KlasseAbgeleitet
Inherits BasisEigenschaften
...
End Class
 

Lesen sie die antworten

#1 Peter Götz
30/11/2007 - 14:54 | Warnen spam
Hallo Peter,

wenn sich in der Basisklasse eine bestimmte Eigenschaft
àndert, möchte ich dieses Ergeignis in der abgeleiteten
Klasse erfassen, um etwas zu tun. Ich habe in der
Basisklasse ein Ereignis definiert, aber weiß jetzt nicht wie
ich in der abgeleiteten Klasse (KlasseAbgeleitet) dieses
abfange.



Da brauchst Du nichts abfangen.
Ein in der Basisklasse definiertes Ereignis wird auch
in der davon abgeleiteten Klasse ausgelöst.

' /// Beispiel:

' ____Basisklasse
Public Class Class1
Private mName As String

Public Event NameChanged(ByVal NewName As String)

Public Property Name() As String
Get
Return mName
End Get
Set(ByVal value As String)
mName = value
RaiseEvent NameChanged(value)
End Set
End Property
End Class


' ____abgeleitete Klasse
Public Class Class2
Inherits Class1

Public mNachName As String

Public Property NachName() As String
Get
Return mNachName
End Get
Set(ByVal value As String)
mNachName = value
End Set
End Property

End Class


' ____Anwendung in Formmodul
Public Class Form1

Private WithEvents TestClass As Class2
Private mCntr As Integer

Private mNames() As String = _
{"Müller", "Maier", "Schulze", "Schneider"}

Private Sub Form1_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Click

TestClass.Name = mNames(mCntr)
mCntr += 1
If mCntr > mNames.GetUpperBound(0) Then
mCntr = 0
End If
End Sub

Private Sub Form1_Load _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Load

TestClass = New Class2
TestClass.Name = "Huber"
TestClass.NachName = "Hans"
End Sub

Private Sub TestClass_NameChanged _
(ByVal NewName As String _
) Handles TestClass.NameChanged

MsgBox("NameChanged: " & ControlChars.CrLf & _
NewName, MsgBoxStyle.Information)
End Sub
End Class
' \\\ ______

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen