• 您的位置我爱Aspx >> VB.Net >> VB.NET的Override事件处理程序
  • VB.NET的Override事件处理程序

  • 作者:aspxer  来源:internet  日期:2007-5-20 14:01:54  关键字:.net
  • Counter.ToString() & " times.")

    End Sub

    2) 为什么不需要 Handles 子句

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

    @# 错误的代码

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

    ByVal e as System.EventArgs) Handles Button1.Click

    Static Counter as Integer = 0

    @# 本例中使用了 Handles 子句,

    @# 因而每当按钮 Button1 被点击一次,

    @# 变量 Counter 将会增加两次 ;

    Counter += 1

    @# 消息框也会弹出两次,

    @# 显示的内容也将违背设计意图

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

    Counter.ToString() & " times.")

    End Sub

    结论

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

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:VB.net中HOOK的应用(CNET中文网)
    下一篇:vb.Net编程简介之五(轉)