Response to Event in Arc Engine
来源:互联网 发布:淘宝代充王者荣耀流程 编辑:程序博客网 时间:2024/06/05 21:14
今天又看了看C#中的事件响应机制和delegate的概念,对此有了些理解,根据这些概念来写一些进行arc engine开发时对于arc object上的事件的响应。
在arc engine 开发中 arc object 是作为COM类引用到.net中的,对其上事件的响应也是通过委托delegate来实现,只是对于委托delegate和相应的事件已经在arc object中定义好了,我们只需实例化一个delegate对象将其加到事件的列表中去即可。具体步骤如下:
1。 Create a delegate 声明一个delegate用来响应事件。
IAppROTEvents_AppRemovedEventHandler m_appRemoved;
在arc object 的COM类中 委托的名字有四部分组成:事件接口名字,下划线,事件名字,EventHandler。
2。用我们自己定义的函数(即用来响应事件的方法)实例化这个委托,从而建立了一个委托的实例
//Create a delegate instance and add it to AppRemoved event
m_pAppRot = new AppROTClass();
m_pAppRot = new AppROTClass();
//用我们自己定义的方法实例化该委托。
m_appRemoved = new IAppROTEvents_AppRemovedEventHandler(AppRemoved);
3。将建立好的委托实例加到事件中去。 事件可以理解为在事件发布者(arc object)中定义好的一个委托链,该委托链(即事件)何时发生 也在事件发布者中进行了定义,我们要做的是把自己的方法通过委托实例加到这个委托链中去,该委托链(即事件)发生时一并加以执行。
// add the delegate to the event
((IAppROTEvents_Event)m_pAppRot).AppRemoved += m_appRemoved;
所需注意的是一点接口上的转换类的默认接口一般都不在事件类上,故要首先转到事件接口上才能访问到事件。(IAppROTEvents_Event)就是进行了一下转换。
define the method
private void QuitArcMap()
{
if (m_pDoc != null)
{
m_pApp.Shutdown(); //Quit ArcMap
m_pDoc = null; //Release m_pDoc
m_pApp = null; //Release m_pApp
cmdStartArcMap.Enabled = true;
cmdAddData.Enabled = false;
cmdQuitArcMap.Enabled = false;
}
}
{
if (m_pDoc != null)
{
m_pApp.Shutdown(); //Quit ArcMap
m_pDoc = null; //Release m_pDoc
m_pApp = null; //Release m_pApp
cmdStartArcMap.Enabled = true;
cmdAddData.Enabled = false;
cmdQuitArcMap.Enabled = false;
}
}
一点粗浅理解,供交流。
- Response to Event in Arc Engine
- 6 ways/effects that response to user’s event in Flex
- Arc engine
- Redirect in response to POST transaction
- arc engine 问题
- Arc Engine 开发1
- how to trigger event in program
- ARC , event,UIScrillView
- arc to no arc
- Introduction to debug Fatal Execution Engine Error in .net code
- Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap"
- How to implement a 3D engine in HTML5
- 解决Unable to locate theme engine in module_path: "pixmap"
- 解决Unable to locate theme engine in module_path: "pixmap"
- 解决Unable to locate theme engine in module_path: "pixmap"
- 解决Unable to locate theme engine in module_path: "pixmap"
- Introduction to Transaction Locks in InnoDB Storage Engine
- How to Creat Dynamic Textures in Unreal Engine 4
- Study SAP SD Module (1)
- 删除模板列
- RSA与大数运算
- C#将文件保存到数据库中或者从数据库中读取文件
- UPnP协议
- Response to Event in Arc Engine
- 表格的隐藏显示
- 什么是SSH?
- Petshop4.0之“反射注入”技术
- 制作SWAP的方法
- C 关于页面刷新和combobox的使用
- 用jsp动态输出excel文档和中文乱码问题的解决
- 在逻辑层快速获取一个表的结构
- 一篇关于web.xml配置的详细说明