田草博客
日志搜索


 标题   内容 评论


网友交流QQ群:11740834 需注明申请加入原因

微信 公众号:ByCAD

邮箱:tiancao1001x126.com
ByCAD,微信公众号
首页 | 普通 | 电脑 | AutoCAD | VB/VB.NET | FLash | 结构 | 建筑 | 电影 | BIM | 规范 | 软件
-电信用户-|-网通用户-
-博客论坛-|-软件下载-
-网站导航-|-规范下载-
-BelovedFLash欣赏-

用户登陆
用户:
密码:
 

站点日历
73 2020 - 6 48
 123456
78910111213
14151617181920
21222324252627
282930


站点统计

最新评论



注册表中的AutoCAD系列ProductID和LocaleID 在NET窗体/对话框中显示模型空间的一部分
未知 在VB.NET中处理事件   [ 日期:2014-01-18 ]   [ 来自:转帖 ]  HTML
文章来源:http://adndevblog.typepad.com/autocad/20 ... #101;vents-in-vbnet.html

Handling events in VB.NET
By Adam Nagy

I found a C# sample project called EventsWatcher, but I'm not sure how to do similar event handling in VB.NET

Solution

In VB.NET you can handle events in two ways:

1) The VB6 way:

1.declare a variable with WithEvents keyword 
2.set it to the object which provides the events 
3.select the variable in the combo box on the left side (A) above the coding area, then select the event you want to handle in the combo box on the right side (B) 

按此在新窗口打开图片


2) The .NET way / handling a specific event

1.define a function you want to handle the event with, e.g. OnDocumentDestroyed 
2.create a delegate for the function, e.g. New DocumentDestroyedEventHandler(AddressOf OnDocumentDestroyed) 
3.use AddHandler to add the delegate as one of the handlers of the specific event 
Imports Autodesk.AutoCAD.Runtime

Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.ApplicationServices
Public Class MyClass1  
  ' VB style  
  Private Shared WithEvents docEvents As DocumentCollection  
  Private Shared Sub docEvents_DocumentCreated(ByVal sender As Object, ByVal e As DocumentCollectionEventArgs) _
Handles docEvents.DocumentCreated    
      MsgBox(e.Document.Name & " opened")  
  End Sub  

  ' .NET style  
  Private Shared docDestroyedEvent As DocumentDestroyedEventHandler  
  Public Shared Sub OnDocumentDestroyed(ByVal sender As Object, ByVal e As DocumentDestroyedEventArgs)
    MsgBox(e.FileName & " closed")  
  End Sub  
  <CommandMethod("StartEventHandling")> _  
  Public Sub Asdkcmd1()    
    ' Start VB Style handling – all docEvents related event 
    ' handling is started     
    dcEvents = Application.DocumentManager    
    ' Start .NET style handling – only this specific event 
    ' handling is started    
    Dim docs As DocumentCollection = Application.DocumentManager   
    If docDestroyedEvent Is Nothing Then      
      docDestroyedEvent = 
        New DocumentDestroyedEventHandler(
          AddressOf OnDocumentDestroyed)      
      AddHandler docs.DocumentDestroyed, docDestroyedEvent    
    End If  
  End Sub  
  <CommandMethod("StopEventHandling")> _  
  Public Sub Asdkcmd2()    
    ' Stop VB style handling – all docEvents related event handling 
    ' is stopped    
    docEvents = Nothing   
    ' Stop .NET style handling – only this specific event handling 
    ' is stopped    
    Dim docs As DocumentCollection = Application.DocumentManager    
    If Not docDestroyedEvent is Nothing Then       
      emoveHandler docs.DocumentDestroyed, docDestroyedEvent      
      docDestroyedEvent = Nothing    
    End If    
  End Sub
End Class

In VB.NET “Shared” is the C#/C++ equivalent of “static”, which means that the same instance of the variable will be available for all instances of the container class. 
You find this being used in the EventsWatcher sample as well. It’s needed, because otherwise a new instance of MyClass1 would be created for each document. 
So without this “Shared” keyword, each document in which you called “StartEventHandling” would start running its own event handler.



[本日志由 tiancao1001 于 2014-01-18 11:08 PM 编辑]


暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:   注册? 验证:  防止恶意留言请输入问题答案:1*2=?  
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字

字体样式 文字大小 文字颜色
插入粗体文本 插入斜体文本 插入下划线
左对齐 居中对齐 右对齐
插入超级链接 插入邮件地址 插入图像
插入 Flash 插入代码 插入引用
插入列表 插入音频文件 插入视频文件
插入缩进符合
点击下载按钮 下标 上标
水平线 简介分割标记
表  情
 
Tiancao Blog All Rights Reserved 田草博客 版权所有
Copyright ©