1.  功能简介

TocControl控件的主要作用是显示当前加载的图层有哪些、采用什么样的符号等,目的是使用户对当前加载的数据和结构有一个总体的把握。与之相关联的伙伴控件有MapControl,PageLayoutControl。

TOCControl 为用户提供了一个交互式的环境,如果 TOCControl 控件的伙伴控件是 MapControl 控件,当我们将 TOCControl 控件中图层删掉是,MapControl 控件中相应的图层也会被删掉。

当地图视图和制图视图都存在的时候,TocControl控件要与PageLayoutControl控件进行绑定,MapControl的map和PageLayoutControl的map关联,这样才能确保地图视图和制图视图的数据保持一致。

[图层树-伙伴控件对应]

2.  功能实现说明

一、界面设计

1、在主界面上添加控件SplitContainer,将Dock属性设置为填充“Fill”,在左边一个pannel里面添加图层树TOCControl控件,

2、在右边的pannel里面从工具箱里添加一个TabControl控件,将Dock属性设置为填充“Fill”;

然后右键TabControl控件修改属性“Alignment”为“Bottom”,

修改属性“Dock”为“Bottom”填充,使控件填充页面

最后修改属性,进入TabPage集合编辑器页面,依次选择左侧的将tabPage1的Text修改为“地图模式”,tabPage2的Text修改为“制图模式”。然后确定。

3、点击地图模式按钮,添加MapControl控件,设置Dock为“Fill”,修改属性“Name”为MapControlMain,然后再点击制图模式按钮,添加PageLayoutControl控件,设置Dock为Fill,设置Name为PageLayoutControl1

二、图层树,地图和制图视图绑定

1、界面设计好之后,首先在窗体初始化的时候进行地图初始化,为了图层树和地图进行关联,地图和制图数据同步,所以将mapControl的地图和PageLayoutControl的地图进行绑定,将PageLayoutControl与图层树进行绑定。

  /// <summary>
/// 初始化
/// </summary>
private void Init()
{
//地图和制图绑定,图层树和制图绑定
mapControlMain.FocusMap = pageLayoutControl1.FocusMap;
tocControlMain.SetBuddyControl(pageLayoutControl1 as IPmdContents);
pageLayoutControl1.DeActivate();
mapControlMain.Activate();
}

2、地图模式和制图模式窗口切换

右键TabControl控件属性,选择事件,找到SelectIndexChange事件,进行功能实现

         /// <summary>
/// 地图和制图窗口切换
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedIndex == )//地图模式
{
ActiveMapControl();
}
else if (tabControl1.SelectedIndex == )//制图模式
{
ActivePagelayoutControl();
}
} /// <summary>
/// 激活地图模式
/// </summary>
private void ActiveMapControl()
{
pageLayoutControl1.DeActivate();
mapControlMain.Activate();
mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
} /// <summary>
/// 激活制图模式
/// </summary>
private void ActivePagelayoutControl()
{
mapControlMain.DeActivate();
pageLayoutControl1.Activate();
pageLayoutControl1.PartialRefresh(ViewDrawPhaseType.ViewAll);
}

示例代码路径:

项目路径

百度云盘地址下/PIE示例程序/11.图层树功能/ PIEDemo_SetBuddy

数据路径

百度云盘地址下/PIE示例数据/栅格数据/ World/World.tif

视频路径

百度云盘地址下/PIE视频教程/11.图层树功能/01.图层树伙伴控件.avi

三、效果图如下图所示

PIE SDK图层树伙伴控件示例的更多相关文章

  1. PIE SDK图层树右键菜单与命令绑定

    1.   功能简介 上一节已经介绍过图层树如何和地图和制图关联,图层树右键菜单主要是基于TocControl控件进行对菜单节点进行控制,TocControl主要作用是显示当前加载的图层有哪些.采用什么 ...

  2. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

  3. Win32 SDK程序创建一些控件(简单调用InitCommonControlsEx,并指定ICC_LISTVIEW_CLASSES控件就可以了)

    在Win32 SDK中创建一些控件的时候需要注意一下(具体是哪些控件请参看MSDN文档中列出来的) /* MSDN:Carries information used to load common co ...

  4. VC中实现带有背景位图的树型控件

    当前许多应用程序都在使用树型控件时为其添加了背景位图,增强的控件的魅力,然而对于Visual C++编程爱好者来说,使用Visual C++MFC提供的树型控件(CTreeCtrl)本身就是一个难点, ...

  5. asp.net模板控件示例

    原文:asp.net模板控件示例 模板控件允许将控件数据与其表示形式相分离,模板化控件不提供用户界面. 编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类,MSDN是这样解释的. 下面 ...

  6. 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件

    老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...

  7. MVC4加载zTree树小控件

    前言: 第一次学习使用MVC框架,找了个练手项目,加载zTree树小控件.下面我就一步步说明我这次练手的经历以记录.如果有什么错误,希望各位大神帮忙指正,谢谢. 第一步: 利用VS2010新建一个MV ...

  8. Android SDK提供的常用控件Widget “常用控件”“Android原生”

    Android提供一个标准的视图工具箱来帮助创建简单的UI界面.通过使用这些控件(必要时,可以对这些控件进行修改). 创建一个简单的.xml文件,从预览窗口可以看到Android SDK提供的原生控件 ...

  9. React Native 教程:001 - 如何运行官方控件示例 App

    原文发表于我的技术博客 本文主要讲解了如何运行 React Native 官方控件示例 App,包含了一些 React Native 的基础知识以及相关环境的配置. 原文发表于我的技术博客 React ...

随机推荐

  1. web端测试点汇总

    前言 前面一篇文章讲解了app测试一些功能点.那么相应的也梳理一下web测试相关的功能的测试点吧,此篇文章只是给你们一个思路,如果要涉及web端每个测试点,基本不可能实现的,所以只是提供一个设计的思路 ...

  2. TP5图片上传

    /*图片上传*/ public function upload(){ // 获取表单上传文件 例如上传了001.jpg $file = request()->file('file'); // 移 ...

  3. Aircrack使用

    Aircrack Aircrack-ng 组件功能之一就是采集WEP及WPA-PSK字典并应用无线端口扫描进行破解,具体组件说明如下: aircrack-ng 功能主要是WEP及WPA-PSK密码的恢 ...

  4. oracle列出两个日期间所有日期

    select date '2010-1-1'+level-1 dates from dual connect by level <date '2010-1-10' -date '2010-1-1 ...

  5. 【转】SSH指南

    OpenSSH OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现.它用安全.加密的网络连接工具代替了 telnet.ftp. rlogin.rsh 和 rcp 工具.Ope ...

  6. Sharepoint 文档知识管理系统--Word在试图打开文件时遇到错误

    在系统开发中,遇到问题:SharePoint 2010与Office 2010安装在一台服务器上,当用Office打开SharePoint文档库中的文档时,遇到“Word在试图打开文件时遇到错误,请尝 ...

  7. android onResultActivity不执行原因总结

    插一个注意点.在用ArrayAdapter的时候数据那里的类型必须是List<String> 不能是ArrayList<String> 1.在A.Activity中调用star ...

  8. mvc - view传值到js

    http://www.cnblogs.com/akwwl/p/5238975.html

  9. docker--基本命令

    仅做学习参考,可能有误 part1:启动docker服务 在Windows上使用MySQL时候,有时无法直接使用MySQL -uroot -p 来进入MySQL,这是因为我们没有启动会MySQL服务此 ...

  10. 个人常用Markdow语法代码备用

    1.分隔线 -------------------------------- 2.OC代码 ``` Objective-C ``` 3.字体加粗 ##加粗## 4.标题样式 <h1> &l ...