在ArcMap使用过程中我们常常想开发一些小功能插件,在此就要用到add-in插件的开发方法,创建add-in插件的步骤就不细述了。在此说明如何在ArcMap中添加自定义交互窗体(之所以将这个是因为网上找到的教程中好像没有讲一些细枝末节的东西,在此讲明一下)
首先创建一个DockableWindow类型的程序集:打开VS,右击解决方案,选择“添加”,选择新建项,在ArcGIS模板中选择
然后选择Add-in插件类型,在此选择Dockablewindow
建成完毕后在设计窗口添加必要的控件,然后右键点击程序集,选择“生成”,生成dll,
新建另一个add-in程序集,在此以Button类型为例,在它的Config.Designer.cs文件中相应位置做如下修改:
其中a是上一个DockableWindow程序集的名字
b为该程序集Config.esriaddinx文件中记录的DockableWindow id。
然后在Button程序集的引用中添加刚刚生成的DockableWindow的dll,编写相应的DockableWindow弹出代码如下,右键点击Button程序集,选择“生成”或是“重新生成”,若重新生成出现问题,则将所有ESRI控件改成“复制到本地--true”。
参考代码(OnClick事件中): IDockableWindowManager pDocWinMgr = ArcMap.DockableWindowManager;
UID uid = new UIDClass();
uid.Value = ThisAddIn.IDs.DockableWindow1;
IDockableWindow pTOC = pDocWinMgr.GetDockableWindow(uid);
if (pTOC.IsVisible())
pTOC.Dock(esriDockFlags.esriDockRight);
在ArcMap中使用前要先安装这两个程序集生成的add-in插件,,DockableWindow的插件在程序集的Debug文件夹下点击安装,其在ArcMap中不可见,只有在运行的时候才会出现,Button的插件在Customize中添加安装即可