当初csdn提供bolg的时候,我也凑热闹开通了一个,由于几年不做技术啦,一直也没开写。如今来到了新单位,居然又要开始做一些开发工作了,唉,想当年,俺用的是Vb6,开发了许多的GIS软件,那叫一个熟啊,现如今重操编程旧业,要用C#开发ArcEngine了,两个东东对我而言都是很新鲜的啊,学吧...
突然想到我还有个csdn bolg,写写学习心得吧, 今天是我学C#的第3天,ArcEngine的第4天,觉得delegate和事件好费解,可开发ArcEngine又很常用,比如:
((ICustomizeDialogEvents_Event)m_CustomizeDialog).OnCloseDialog += new ICustomizeDialogEvents_OnCloseDialogEventHandler(this.OnCloseDialog);
于是对比着button的click事件琢磨了一下这句代码的含义,理解如下:
(ICustomizeDialogEvents_Event)m_CustomizeDialog的作用是QI from ICustomDialog to ICustomizeDialogEvents_Event,对了C#里面习惯叫强制类型转换,QI(Query Interface)是AO里的叫法;然后就像.net frame的button类已经为开发者建立了(继承了)System.EventHandler这个delegate一样,ESRI.ArcGIS.ToolbarControl类也已经建立(应该是继承)了一个名为stomizeDialogEvents_OnCloseDialogEventHandler的delegate;同样的,.net