千家信息网

VB.NET Override的处理方式是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,VB.NET Override的处理方式是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在学习了VB.NET这门编程
千家信息网最后更新 2026年11月02日VB.NET Override的处理方式是什么

VB.NET Override的处理方式是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

在学习了VB.NET这门编程语言后,大家会慢慢的发现这门语言中隐藏的知识是很广的,有很多功能值得我们去深入的研究。比如VB.NET Override就是其中一个比较难掌握的知识点。在类或控件的继承中,子类或子控件封装了父类的所有函数,其中包括事件处理程序。

继承事件处理程序

当组件被继承时,它的所有成员都被封装到子类中。事件处理程序是响应特定事件的方法,是组件成员之一,因而也被继承。请看一个典型的事件处理程序:

  1. Private Sub Button1_Click(ByVal
    sender As System.Object,
    ByVal e as _

  2. System.EventArgs) Handles
    Button1.Click

  3. Static Counter as Integer = 0

  4. Counter += 1

  5. MessageBox.Show (" This button
    has been clicked " & _

  6. Counter.ToString() & " times.")

  7. End Sub

我们看到,宣告部分末尾的 Handles 子句把处理程序关联到特定的事件上。具体而言,上述代码将在 Button1.Click 事件发生时运行。这就是用于定义事件处理程序的典型语法。

为了实现VB.NET Override,你必须使用 Overridable 关键字,并且重新定义其可见性为 Protected 、 Protected Friend 或者 Public 。下面示范如何 override 事件处理程式:

  1. Protected Overridable Sub
    Button1_Click(ByVal sender
    As System.Object, _

  2. ByVal e as System.EventArgs)
    Handles Button1.Click

  3. Static Counter as Integer = 0

  4. Counter += 1

  5. MessageBox.Show (" This button
    has been clicked " & _

  6. Counter.ToString() & " times.")

  7. End Sub

在组件中继承事件处理程序

事件处理程序的VB.NET Override固然与其它方法的 override 大同小异,有一点却不得不提:在 override 事件处理程序时必须除去 Handles 子句。

如何 override 组件的事件处理程序

1) 在事件处理程序的宣告部分加入 Overrides 关键字

请注意:不要附加 Handles 子句。因为父类的处理程序已经关联了特定事件,子类将继承这一切。换句话说,父类所关联的事件可以激活子类的处理程序,因而这里的 Handles 子句是多余的。

下面示范如何 override 前述事件处理程序:

  1. Protected Overrides Sub
    Button1_Click(ByVal sender
    As System.Object, _

  2. ByVal e as System.EventArgs)

  3. Static Counter as Integer = 0

  4. Counter += 1

  5. MessageBox.Show (" This inherited
    button has been clicked " & _

  6. Counter.ToString() & " times.")

  7. End Sub

2) 为什么不需要 Handles 子句

前面提到,我们没有使用关联事件的 Handles 子句并不是一个疏漏,而是由 .NET 框架的事件处理机制所决定的。父类中的 Handles 子句将事件处理程序关联到特定事件上,这种关联将被子类继承。因此,即令子类中没有 Handles 子句,父类所关联的事件也能激活子类的事件处理程序。倘若此时加上 Handles 子句,则处理程序将被再次关联到事件上。重复关联的后果是处理程序将被连续激活两次。例如:

  1. ' 错误的代码

  2. Protected Overrides Sub
    Button1_Click(ByVal sender As
    System.Object, _

  3. ByVal e as System.EventArgs) Handles
    Button1.Click

  4. Static Counter as Integer = 0

  5. ' 本例中使用了 Handles 子句,

  6. ' 因而每当按钮 Button1 被点击一次,

  7. ' 变量 Counter 将会增加两次 ;

  8. Counter += 1

  9. ' 消息框也会弹出两次,

  10. ' 显示的内容也将违背设计意图

  11. MessageBox.Show (" This inherited
    button has been clicked " & _

  12. Counter.ToString() & " times.")

  13. End Sub

结论

在 Visual Basic .NET 中,事件处理程序的VB.NET Override可能造成难以侦错的 bug 。例如在使用 Handles 子句关联事件处理程序时就要格外小心,以免发生重复关联。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

事件 处理 程序 子句 关联 子类 组件 激活 知识 代码 关键 关键字 典型 内容 就是 成员 控件 方法 语言 部分 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 美国互联网科技巨头监管 互联网科技类展会 互联网科技素材视频竖屏 互联网科技创新企业排名 哈尔滨秒房互联网科技有限公司 广州慧亚互联网科技怎么样 互联网还是高科技吗 玉溪互联网科技怎么选 广州百诚互联网科技有限公司官网 易企秀互联网科技是做什么的 国产互联网科技公司 保山互联网科技靠谱吗 互联网时代高科技布局 互联网科技创新创业项目 互联网科技大会大佬 瑞安市蟠桃会互联网科技有限公司 中国主要互联网科技公司 互联网 科技节活动 微视频大赛 小牛互联网科技有限公司地址 云之行互联网科技 美国互联网科技 齐家互联网科技 武汉健翔互联网络科技有限公司 宜昌元轩互联网科技有限公司 世界互联网领先科技成果获奖 2021互联网科技公司排名 中天科技中国工业互联网 35岁以上互联网科技行业 小牛互联网科技有限公司地址
0