假设我有一个对象(例如,Form1)的一个成员(例如,Button1),它使用事件(例如,Form1.Button1_Click)来删除,并且在该对象中有一个具有'Handles‘的处理程序。
如果我覆盖它(比方说,Form2.Button1_Click),处理程序会调用被覆盖的版本(如me.Button1_Click)还是带有实际句柄的版本(如MyClass.Button1_Click)?
这是我尝试过的:
Public Class Form1
Public Overridable Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Form1's Button")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim f2 As New Form2
f2.Show()
End Sub
End Class
Public Class Form2
Inherits Form1
Public Overrides Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
MsgBox("Form2's Button")
End Sub
End Class发布于 2013-02-02 12:05:19
指定Overridable修饰符表示可以重写该方法。
To override是to reject or cancel (a decision, view, etc.)__。
Overrides指定该方法将覆盖现有的事件处理程序实现。Form1中的现有方法将永远不会被调用,除非您手动调用它。您可以使用MyBase关键字手动调用它,该关键字本质上允许您引用当前实例的基类。
Public Overrides Sub Button1_Click(sender As Object, e As EventArgs)
MessageBox.Show("SecondForm's Button")
MyBase.Button1_Click(sender, e)
End Sub发布于 2013-02-02 07:37:34
被重写的版本称为。当我在Form1上点击button1时,我得到了“Form1的按钮”。当我使用button2启动第二个表单时,我单击了button1,并获得了“Form2的按钮”
正因为如此,任何人尝试在谷歌上搜索它,都没有找到像我一样的东西,我花了我生命中的10分钟来测试它,现在其他人都不需要了!
https://stackoverflow.com/questions/14656866
复制相似问题