当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 第7章 事件 style="MARGIN: 0cm
 

 

 ·读写一般格式的xml文件     »显示摘要«
    摘要:把数据都一次性存入数据库固然好,但是设想如果用户运行系统的计算机没有接入网络,即根本建立不了与数据库的连接,那该怎么办?总不能不要数据了任由其丢失吧。于是此时本地数据文件变的尤为重要,她们成为承载数据的媒介。不过选择存储数据的文件格式需要仔细周全的考虑,在存储和读取数据文件的过程中,不同的文件格式会给程序的性能带来不同的影响。xml(extensible markup language)文件作为与......
 ·小偷程序(asp.net+c#)     »显示摘要«
    摘要:在.net 平台下,创建一个asp.net的程序1、引用两个namespace using system.text //因为用了encoding类 using system.net //因为用了webclient 类2、整个程序用了三个控件 txturl //输入你要获取的网页地址 textbox控件 txtbody //得到你要获取的网页内容 textbox控件 btnreturn //按钮bu......


Autodesk官方最新的.NET教程(七)(C#版)
第7章 事件

本章将讨论autocad中的事件.我们将介绍事件处理函数的使用,特别是监视autocad命令的事件处理函数与监视被autocad命令修改的对象的事件处理函数.在解释怎样在c#中实现autocad的事件处理之前,我们将首先简要地讨论一下.net中的事件.

【程序编程相关:[DNN学习所得]让IE也能实现解压缩功

【推荐阅读:Some tips for using

  【扩展信息:ORACLE 常用的SQL语法和数据对象

第一部分  c#中的事件

事件只是用来通知一个行为已经发生的信息.在objectarx中,我们使用反应器(reactor)来处理autocad的事件.而在autocad .net api中,objectarx反应器被换成了事件.

事件处理函数(或者叫回调函数)是用来监视与反馈程序中出现的事件.事件可以以不同的形式出现.

在介绍autocad .net api中的事件之前,让我们先来简单地了解一下代理.

第1a部分  代理

代理是一个存储方法索引的类(概念与函数指针类似).代理对方法是类型安全的(与c中的函数指针类似).代理有特定的形式与返回类型.代理可以封装符合这种特定形式的任何方法.

代理的一个用途就是作为产生事件的类的分发器.事件是.net环境中第一级别的对象.虽然c#把事件处理的许多细节给隐藏掉了,但事件总是由代理来实现的.事件代理可以多次调用(就是它们可以存储多于1个的事件处理方法的索引).它们保存了用于事件的一个注册事件处理的列表.一个典型的代理有以下的形式:

public delegate event (object sender, eventargs e)

 

第一个参数sender表示引发事件的对象.第二个参数e是一个eventargs参数(或者是一个派生的类),这个对象通常包含用于事件处理函数的数据.

第1b部分 +=与-=语句

 

要使用事件处理函数,我们必须把它与事件联系起来.这要通过使用+=语句.+=与-=允许你在运行时连接.断开或修改与事件联系的处理函数.

当我们使用+=语句时,我们要确定事件引发者的名字,并要使用new语句来确定事件处理函数,例如:

myclass1.anevent += new  handlerdelegate(ehandler)

 

前面我们说过要使用-=语句从事件处理函数中断开事件(移除联系).语法如下所示:

myclass1.anevent -= new  handlerdelegate(ehandler)

 

 

第2部分  处理.net中的autocad事件

 

在objectarx中,我们使用反应器来封装autocad事件.在autocad .net api中,我们可以使用事件来代替objectarx反应器.

通常,处理autocad事件的步骤如下:

1.       创建事件处理函数

当一个事件发生时,事件处理函数(或称为回调函数)被调用.任何我们想要处理的回应autocad事件的动作都在事件处理函数中进行.

例如,假定我们只想通知用户一个autocad对象已被加入.我们可以使用autocad数据库事件”objectappended”来完成.我们可以编写回调函数(事件处理函数)如下:

      public void objappended(object o, objecteventargs e)

      {

         // 在这里加入处理代码

      }

 

函数中的第一个参数代表autocad数据库.第二个参数代表objecteventargs类,它可能包含对处理函数有用的数据.

2.       把事件处理函数与事件联系起来

为了开始监视动作,我们必须把事件处理函数与事件联系起来.在这里,当一个对象加入到数据库时,objectappended事件将会发生.但是,事件处理函数不会响应这个事件,除非我们把它与这个事件联系起来,例如:

         database db; 

         db = hostapplicationservices.workingdatabase;

         db. objectappended += new objecteventhandler(objappended);

 

3.       断开事件处理函数

要终止监视一个动作,我们必须断开事件处理函数与事件的联系.当对象被加入时,我们想要停止通知用户这个事件,我们要断开事件处理函数与事件objectappended的联系.

db. objectappended -= new objecteventhandler(objappended);

 

 

第3部分  使用事件处理函数来控制autocad的行为


...   下一页
    摘要: 前段时间,高级数据库原理课程结课,老师布置了一个大作业——实现一个分布式数据库查询系统,因为鄙人一直学习.net,故想使用这个平台实现,以进一步提高自身的水平。开始热情致高,吾在网上搜了n天,也没有什么好的资料,只找到一篇题目为《利用c#实现分布式数据库查询》的文章,此篇文章在多个site上都有雷同,作者不详…… 摸索了几天,找到了实现的方案&......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE