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与图层树进行绑定。

 1  /// <summary>
 2         /// 初始化
 3         /// </summary>
 4         private void Init()
 5         {
 6             //地图和制图绑定,图层树和制图绑定
 7             mapControlMain.FocusMap = pageLayoutControl1.FocusMap;
 8             tocControlMain.SetBuddyControl(pageLayoutControl1 as IPmdContents);
 9             pageLayoutControl1.DeActivate();
10             mapControlMain.Activate();
11         }

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

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

 1         /// <summary>
 2         /// 地图和制图窗口切换
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
 7         {
 8             if (tabControl1.SelectedIndex == 0)//地图模式
 9             {
10                 ActiveMapControl();
11             }
12             else if (tabControl1.SelectedIndex == 1)//制图模式
13             {
14                 ActivePagelayoutControl();
15             }
16         }
17
18         /// <summary>
19         /// 激活地图模式
20         /// </summary>
21         private void ActiveMapControl()
22         {
23             pageLayoutControl1.DeActivate();
24             mapControlMain.Activate();
25             mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);
26         }
27
28         /// <summary>
29         /// 激活制图模式
30         /// </summary>
31         private void ActivePagelayoutControl()
32         {
33             mapControlMain.DeActivate();
34             pageLayoutControl1.Activate();
35             pageLayoutControl1.PartialRefresh(ViewDrawPhaseType.ViewAll);
36         }

示例代码路径:

项目路径

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

数据路径

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

视频路径

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

三、效果图如下图所示

转载于:https://www.cnblogs.com/PIESat/p/10167013.html

PIE SDK图层树伙伴控件示例相关推荐

  1. 树型控件TreeView的几种用法

    1 基本用法 void TreeViewDataBind()         {             //首先清除树型控件内的结点             this.TreeView1.Nodes ...

  2. Iocomp控件教程之Pie Chart——饼状图控件

    Pie Chart--饼状图控件(Pie Chart)以饼状图形式显示每一个项目内容所占的百分比比重.在设计时.能够使用属性编辑器加入或者移除项目以及更改属性值.在执行时.使用AddItem,Remo ...

  3. 用友二次开发 用友控件 Js宿主脚本 调用用友T6 登录 参照 控件示例

    用友二次开发 用友控件 Js宿主脚本 调用用友T6 登录 参照 控件示例 /*****************************************, code by 张朋 ' Email: ...

  4. android 5.0新增 ui 控件,android3.0新增ui控件示例说明.doc

    android3.0新增ui控件示例说明 Android3.0新增UI控件 AdapterViewAnimator控件 AdapterViewAnimator(堆View),已知子类有AdapterV ...

  5. 事件冒泡控件示例(转载)

    .NET Framework 开发员指南   事件冒泡 ASP.NET 页框架提供一种称为"事件冒泡"的技术,允许子控件将事件沿其包容层次结构向上传播.事件冒泡允许在控件层次结构中 ...

  6. python 按钮控件_python实现360皮肤按钮控件示例

    python实现360皮肤按钮控件示例. 代码: #!/usr/bin/python #-*-coding:utf-8-*- #site www.jbxue.com from PyQt4.QtGui ...

  7. Silverlight 信息显示与编辑控件 示例

    Silverlight 真是一个不错的开发平台,想到即将发布的Silverlight 4 更是增加了像去学习他的兴趣. 信息显示控件 TextBlock 信息显示第一个要说的一定是TextBlock, ...

  8. vc++树状控件(TreeCtrl)用法

    /添加树状/ HTREEITEM hItem,hChildItem; //定义树状控件的句柄 CTreeCtrl *pTree = (CTreeCtrl*)GetDlgItem(IDC_TREE);/ ...

  9. asp.net模板控件示例

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

最新文章

  1. 守护线程与非守护线程的区别
  2. MVC %%与%=%与区别
  3. Redis之跳跃表(面试重点容易考)
  4. Linux的Nginx三:类型|特点
  5. Ehab and another construction problem(水题)
  6. LeetCode 题 -7. 整数反转
  7. 在一家公司产生倦怠感,如何化解?
  8. C++自学21:动态分配内存(malloc/calloc/realloc/new)/回收内存(free/delete)
  9. 用python实现excel 14个常用操作_用Python实现excel 14个常用操作
  10. DMA(direct memory access)直接内存访问
  11. Android 手把手教您自定义ViewGroup(一)
  12. Scripting for Testers 测试人员脚本编程教程 Lynda课程中文字幕
  13. 在FPGA中,同步信号、异步信号和亚稳态的理解
  14. SSRF深度解析Gopher协议
  15. 插上U盘提示“需要格式化”如何修复?u盘提示需要格式化,U盘打不开,且8G的U盘只报64M,为什么?
  16. IE的Kiosk模式
  17. jvm调优五:jvm调优工具和调优实战
  18. imx6 android4.4 Recovery添加从U盘升级功能
  19. python求两个数的最大公约数穷举法_求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法...
  20. 百度地图API显示车辆运行轨迹并动画展示

热门文章

  1. 15.Result配置详解
  2. 安装discuz遇到的坑
  3. import javax.servlet 出错(真的很管用)
  4. Nginx + Lua + redis (一)(转)
  5. Nginx 学习笔记(二)反向代理
  6. WF流程设计器升级说明
  7. 关于 Ruby Ruby on Rails 的一些书及论坛网站
  8. c语言程序设计血型与遗传报告,血型遗传关系C语言编程
  9. php 分页类使用,php 分页类
  10. MATLAB plot画图后横轴去除空白