【程序编程相关:Some tips for using 】
【推荐阅读:[FxCop.设计规则]6. 避免使用输】【扩展信息:[DNN学习所得]让IE也能实现解压缩功】
第一部分 vb.net中的事件事件只是用来通知一个行为已经发生的信息.在objectarx中,我们使用反应器(reactor)来处理autocad的事件.而在autocad .net api中,objectarx反应器被换成了事件.事件处理函数(或者叫回调函数)是用来监视与反馈程序中出现的事件.事件可以以不同的形式出现.在介绍autocad .net api中的事件之前,让我们先来简单地了解一下代理.第1a部分 代理代理是一个存储方法索引的类(概念与函数指针类似).代理对方法是类型安全的(与c中的函数指针类似).代理有特定的形式与返回类型.代理可以封装符合这种特定形式的任何方法.代理的一个用途就是作为产生事件的类的分发器.事件是.net环境中第一级别的对象.虽然vb.net把事件处理的许多细节给隐藏掉了,但事件总是由代理来实现的.事件代理可以多次调用(就是它们可以存储多于1个的事件处理方法的索引).它们保存了用于事件的一个注册事件处理的列表.一个典型的代理有以下的形式:public delegate event (sender as object, e as eventargs)
第一个参数sender表示引发事件的对象.第二个参数e是一个eventargs参数(或者是一个派生的类),这个对象通常包含用于事件处理函数的数据.
第1b部分 addhandler与removehandler语句
要使用事件处理函数,我们必须把它与事件联系起来.这要通过使用addhandler语句.addhandler与removehandler允许你在运行时连接.断开或修改与事件联系的处理函数.当我们使用addhandler语句时,我们要确定事件引发者的名字,并要使用addressof语句来确定事件处理函数,例如:addhandler myclass1.anevent, addressof ehandler
前面我们说过要使用removehandler语句从事件处理函数中断开事件(移除联系).语法如下所示:removehandler myclass1.anevent, addressof ehandler
第2部分 处理.net中的autocad事件
在objectarx中,我们使用反应器来封装autocad事件.在autocad .net api中,我们可以使用事件来代替objectarx反应器.通常,处理autocad事件的步骤如下:1. 创建事件处理函数当一个事件发生时,事件处理函数(或称为回调函数)被调用.任何我们想要处理的回应autocad事件的动作都在事件处理函数中进行.例如,假定我们只想通知用户一个autocad对象已被加入.我们可以使用autocad数据库事件”objectappended”来完成.我们可以编写回调函数(事件处理函数)如下:sub objappended(byval o as object, byval e as objecteventargs) messagebox.show("objectappended!") ‘在这里加入一些代码end sub
函数中的第一个参数代表autocad数据库.第二个参数代表objecteventargs类,它可能包含对处理函数有用的数据.... 下一页