小刀人
-No business too small, no problem too big.
<2008年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
公告
  • Learn,Think,and Imagine...

    正在看的书:

    点击发送消息给我

留言簿(6)

随笔分类

随笔档案

文章档案

相册

CSDN

VC知识库

开发站点

技术blog

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-23 文章-0 评论-61 Trackbacks-0
Bill Horst (view profile)
March 30, 2005
翻译:小刀人

Environment:  VB .NET 2005

本文提供了自定义事件的介绍,一个VB .NET 2005的新的语言特性。自定义事件允许在事件的AddHandler, RemoveHandler, 和RaiseEvent 被调用时由用户指定要做什么。
Visual Basic 2005 有一些在以前的VB.NET版本中没有的新的特性。其中一个就是能创建自定义事件以使得程序员可以在AddHandler, RemoveHandler, 和RaiseEvent 被调用时指定要做什么。
下面是一个使用自定义事件的VB代码以记录数据处理的变化。当然,这只是一个如何使用自定义事件的例子,该方法基本上可以被用于任何目的。

Delegate Sub MyDelegate(ByVal message As String)

Class MyClass1
   Custom 
Event MyEvent As MyDelegate

      
' 这段代码将AddHandler MyEvent, D1被调用时运行
      AddHandler(ByVal value As MyDelegate)
         Console.
WriteLine("Adding Handler for MyEvent")
         MyEventHandler 
= value
      
End AddHandler

      
' 这段代码将RemoveHandler MyEvent, D1被调用时运行
      RemoveHandler(ByVal value As MyDelegate)
         Console.
WriteLine("Removing Handler for MyEvent")
         MyEventHandler 
= Nothing
      
End RemoveHandler

      
' 这段代码将RaiseEvent MyEvent(string)被调用时运行
      RaiseEvent(ByVal message As String)
         
If Not MyEventHandler Is Nothing Then
            MyEventHandler.Invoke(message)
         
Else
            Console.
WriteLine("No Handler for Raised MyEvent")
         
End If
      
End RaiseEvent
   
End Event

   
Public MyEventHandler As MyDelegate

   
Public Sub Raise_Event()
      
RaiseEvent MyEvent("MyEvent Was Raised")
   
End Sub

End Class


Module DelegateModule
   
Dim Var1 As MyClass1
   
Dim D1 As MyDelegate

   
Sub Main()
      Var1 
= New MyClass1
      D1 
= New MyDelegate(AddressOf MyHandler)
      
AddHandler Var1.MyEvent, D1
      Var1.Raise_Event()
      
RemoveHandler Var1.MyEvent, D1
   
End Sub


   
Sub MyHandler(ByVal message As String)
      Console.
WriteLine("Event Handled: " & message)
   
End Sub

End Module



原文链接:http://www.codeguru.com/vb/gen/vb_general/idelanguage/article.php/c9481

posted on 2005-05-22 22:47 小刀人 阅读(3457) 评论(0)  编辑 收藏
Comments
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]