Forums Neueste Beiträge
 

Ereignis in abgeleiteter Klasse überschreiben

18/12/2007 - 20:26 von Peter Gast | Report spam
Hallo
ich habe in einer Basisklasse ein OnButton_Click-Ereignishandler, der in
einigen (nicht allen) abgeleiteten Klassen überschrieben werden soll. Dies
habe ich folgendermaßen umgesetzt:


Public Class frmBasis
Public Overridable Sub OnButtons_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btn.Click
MsgBox("frmBasis")
End Sub
End Class

...

Public Class frmAbgeleitet
Inherits frmBasis

Public Overrides Sub OnButtons_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btn.Click
MsgBox("frmAbgeleitet")
End Sub
End Class


Beim Klick auf den Button wird aber das OnButtons_Click-Ereignis in der
frmAbgeleitet 2x aufgerufen. Außerdem erscheint ein Warnhinweis, dass das
Ereignis Click geschützt sei und nciht geàndert werden kann.


What's wrong?

Danke Peter
 

Lesen sie die antworten

#1 tailorma_de
18/12/2007 - 22:19 | Warnen spam
On Dec 18, 8:26 pm, "Peter Gast" wrote:
Hallo
ich habe in einer Basisklasse ein OnButton_Click-Ereignishandler, der in
einigen (nicht allen) abgeleiteten Klassen überschrieben werden soll. Dies
habe ich folgendermaßen umgesetzt:

Public Class frmBasis
Public Overridable Sub OnButtons_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btn.Click
MsgBox("frmBasis")
End Sub
End Class

...

Public Class frmAbgeleitet
Inherits frmBasis

Public Overrides Sub OnButtons_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btn.Click
MsgBox("frmAbgeleitet")
End Sub
End Class

Beim Klick auf den Button wird aber das OnButtons_Click-Ereignis in der
frmAbgeleitet 2x aufgerufen. Außerdem erscheint ein Warnhinweis, dass das
Ereignis Click geschützt sei und nciht geàndert werden kann.




Du hast mit diesem Code zwei Handler eingerichtet. Lass mal in der
frmAbgeleitet das 'Handles btn.Click' weg. Dann wird nur die Methode
in der Ableitung aufgerufen - und zwar nur einmal. Ist logisch, denn
du hast ja die Methode überschrieben. Also wird diese Implementierung
aufgerufen.

Gruß,
Robert

Ähnliche fragen