Hi Bonnie,
thanks a lot für your advice. I changed my code to using an interface, but the problem still occurs.
This is what I do now:
The cmdexit-button-class changed to
If TypeOf (Me.Parent) Is IDoExit Then
CType(Me.Parent, IDoExit).DoExit()
MsgBox("Interface Button")
Else
End If
MyBase.OnClick(e)
The Myform-Baseclass-Code is now
Implements IDoExit
...
Public Overridable Sub DoExit() Implements IDoExit.DoExit
If Not Me.lIsRunning Then
MsgBox("Interface Base doexit")
Me.Close()
Else
MsgBox("Interface Isrunning")
End If
End Sub
As you mentioned, I forgot to say that all forms are inherited from that myform-baseclass.
Form1 which is the startform, has two buttons, the inherited cmdexit-button which closes the form and another button which
start Form2 as a modal form.
When I click the cmdexit-button on Form1 everything works, i get the "Interface Base doexit"-msgbox and the form closes.
Form 2 has also a cmdexit-button and I expected it to close this form too. But what it does is, that it shows first
the "Interface Base doexit"-msgbox, then the "Interface Button"-msgbox (which does not happen on Form1) but does
not close the form.
So something must be wrong in my inheritance chain.
Best regards
Thomas