1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步

《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步

时间:2020-11-13 04:07:29

相关推荐

《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步

《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步 原文:《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步摘要:在ArcMap中,能够很方面地进行MapView和LayoutView两种视图的切换,而且二者之间的数据是同步显示的。关于两种视图同步的实现方法有多种,可以使用ObjectCopy对象进行数据硬拷贝,而比较简单的方法莫过于二者共享一份地图了,这也是最常用的方法。

教程目录:

第一讲 桌面GIS应用程序框架的建立

第二讲 菜单的添加及其实现

第三讲 MapControl与PageLayoutControl同步

第四讲 状态栏信息的添加与实现

第五讲 鹰眼的实现

第六讲 右键菜单添加与实现

教程Bug及优化方案1

第七讲 图层符号选择器的实现1

第七讲 图层符号选择器的实现2

第八讲 属性数据表的查询显示

------------------------------------------------------------------

在ArcMap中,能够很方面地进行MapView和Layout View两种视图的切换,而且二者之间的数据是同步显示的。

关于两种视图同步的实现方法有多种,可以使用ObjectCopy对象进行数据硬拷贝,而比较简单的方法莫过于二者共享一份地图了,这也是最常用的方法。

1、新建同步类ControlsSynchronizer

在解决方案面板中右击项目名,选择“添加|类”,在类别中选择“Visual C#项目项”,在模板中选择“类”,输入类名“ControlsSynchronizer.cs”,将以下代码覆盖自动生成的代码:

2、新建Maps类

在同步类中,要用到Maps类,用于管理地图对象。与新建同步类ControlsSynchronizer类似,我们新建一Maps类,其所有代码如下所示:

3、新建打开文档类OpenNewMapDocument

由于从工具栏自带的打开按钮打开地图文档的时候,不会自动进行两种视图之间的同步,所以我们要自己派生一个OpenNewMapDocument类,用于打开地图文档。

右击项目名,选择“添加|类”,再选择ArcGIS类别中的BaseCommand模板,输入类名为“OpenNewMapDocument.cs”。

首先添加引用:

再添加如下成员变量:

修改默认的构造函数如下所示:

再在OnClick函数中添加如下代码:

在添加类时,模板会自动添加一个名为“OpenNewMapDocument.bmp”的图标,你可以自己修改或者替换为打开的文件夹的图标。

4、两种视图的同步

在3sdnMap.cs中添加成员变量,即同步类对象:

在Form1_Load函数中进行初始化工作:

因为我们自动派生了打开文档类,并自己将其添加到工具条,所以我们就不需要工具条原来的“打开”按钮了,可以ToolbarControl的属性中将其删除。

下面,我们可完成上一讲遗留的功能了。

在添加数据AddData时,我们也要进行地图共享,故在AddData_Click函数后面添加如下代码:

在另存为地图文档时,有可能会丢失数据,因此我们需要提示用户以确认操作,故需修改SaveAs_Click函数,如下所示:

在切换视图时,我们要激活相关的视图,故在设计视图的属性面板中选择tabControl2控件,再选择事件按钮,找到“SelectedIndexChanged”事件双击添加之。其实现代码如下所示:

5、编译运行

按F5编译运行程序,至此我们完成了MapControl和PageLayoutControl两种视图的同步工作。

posted on -03-10 12:38 NET未来之路 阅读(...) 评论(...) 编辑 收藏

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。