我爱Aspx >> VB.Net >> VB.NET的Override事件处理程序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 子句关联事件处理程序时就要格外小心,以免发生重复关联。
【我对这篇文章有话说?】
vb.Net编程简介之五(轉)[05-20]
vb.Net编程简介之四[05-20]
VB.Net语言方面的改进(轉)[05-20]
Vb.Net问题集 (转贴于此)[05-20]
VB.Net常用语法(转)[05-20]
Visual Basic .NET中的语言创新[05-20]
Visual Basic.NET 新编程模型和语..[05-20]
VS.NET为企业作好准备了吗?[05-20]
Visual Basic 6.0 控件和 .NET 控..[05-20]
Visual Basic 6.0 控件和 .NET 控..[05-20]
vb.Net编程简介之五(轉)[05-20]
vb.Net编程简介之四[05-20]
VB.Net语言方面的改进(轉)[05-20]
Vb.Net问题集 (转贴于此)[05-20]
VB.Net常用语法(转)[05-20]
Visual Basic .NET中的语言创新[05-20]
Visual Basic.NET 新编程模型和语..[05-20]
VS.NET为企业作好准备了吗?[05-20]
Visual Basic 6.0 控件和 .NET 控..[05-20]
Visual Basic 6.0 控件和 .NET 控..[05-20]