vb.net Overridable和Overrides,Overloads的使用

一,Overridable和Overrides

能重写和重写。是用在父类和子类中的。

如:父类:baseForm

Public Overridable Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Debug.WriteLine("common: Button1_Click")
If MsgBox("確認",MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Button1_Do()
End If
End Sub

Public Overridable Function Button1_Do()
MsgBox("base=>Button1_Do")
Return ""
End Function

其中有事件和方法都是Overridable :可以重写的。

所以在子类中就可以这样:

函数Button1_Do加上Overloads 就被重写了。父类的Button1_Do内容就无效了。

同样:事件Button1_Click加上Overrides也被复写了。父类的Button1_Click内容就无效了。

需要注意的是:Handles Button1.Click不删除的话,会调用两次。

一次是父类重写,一次是自身激活。

Public Overloads Function Button1_Do()
MsgBox("subForm=>Button1_Do")
Me.Close()
Return "sub"
End Function

Public Overrides Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
Debug.WriteLine("sub: Button1_Click")
If MsgBox("確認",MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Button1_Do()
End If

End Sub

二,Overloads重载

在一个类中,同名的函数可以定义多次。只不过参数个数,类型,返回值不一致

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...