2011年2月19日星期六

【VB.net】AddEventHandler事件处理方法的设定

   ‘通用按钮事件处理方法的设定

 <System.Runtime.CompilerServices.Extension()> _   
    Public Sub RegistButtonClick(ctrs As Control(), btnClick As EventHandler)
        Dim lstButtons = ctrs.Where(Function(btn) TypeOf btn is Button)
        For Each btn As Button In lstButtons
            AddHandler btn.Click, btnClick
        Next
    End Sub

'画面启动时设定所有按钮的click处理
private sub Onload()
      me.controls.RegistButtonClick(AddressOf CommonClick )
end sub

’处理方法的先后顺序参照设定的顺序。
‘本方法在initionalizeComponent里优先设定过,所以先处理。
private sub btn1_Click (sender As object , e As EventArgs) Handler btn1.Click
   Console.WriteLine("1")
end sub

'共通処理方法
private sub CommonClick (sender As object , e As EventArgs) Handler btn1.Click
   Console.WriteLine("99")
end sub

处理結果顺序:

99

<System.Runtime.CompilerServices.Extension()>是net3.5的方法扩展功能、
需要在Module中设定。

没有评论: