我为TextBox1的TextBox.Leave事件编写了两个事件处理程序
原因是第一个处理程序是多个TextBox.Leave事件的常用处理程序,用于验证值,第二个处理程序特定于上面的TextBox1,它执行一些值的计算.
我的查询是,我可以知道当TextBox1.Leave发生时,两个处理程序中的哪一个将首先执行?
(我知道我可以将公共处理程序中的代码删除到TextBox1的特定处理程序,但我仍然想知道是否有办法.)
谢谢
只要使用AddHandler语句添加事件处理程序,就可以保证事件处理程序的调用顺序与添加它们的顺序相同.另一方面,如果您在事件处理程序方法上使用Handles修饰符,我认为没有任何方法可以确定订单是什么.
这是一个简单的例子,演示了由调用AddHandler的顺序决定的顺序:
Public Class FormVb1 Public Class Test Public Event TestEvent() Public Sub RaiseTest() RaiseEvent TestEvent() End Sub End Class Private _myTest As New Test() Private Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles Button1.Click AddHandler _myTest.TestEvent,AddressOf Handler1 AddHandler _myTest.TestEvent,AddressOf Handler2 _myTest.RaiseTest() RemoveHandler _myTest.TestEvent,AddressOf Handler1 RemoveHandler _myTest.TestEvent,AddressOf Handler2 End Sub Private Sub Handler1() MessageBox.Show("Called first") End Sub Private Sub Handler2() MessageBox.Show("Called second") End Sub End Class