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. 【原创测试】MongoDB千万级插入数据测试(MMO在线游戏应用场合)

    一.筹备 我们要做一次千万级的MONGODB测试,操作系统选用CentOS 5.5 64位版,基本模拟实际的使用环境,采用单机集群模型(测试单机多CPU情况下的实际效果). 测试基准数据: 服务器配置 ...

  2. MFC可视化 列表控件的使用

    1.应该加入头文件   #include <Atlbase.h>   2.示例     类向导给列表控件绑定变量m_list DWORD   dwExStyle=LVS_EX_FULLRO ...

  3. TensorFlow中文手册

    注意:本文只为读书笔记. 第一章 起步 - 起步 - [介绍](SOURCE/get_started/introduction.md) - [下载及安装](SOURCE/get_started/os_ ...

  4. Android 动态改变图片的颜色值

    public void onViewClicked(View view) { switch (view.getId()) { case R.id.bt1: img1.setColorFilter(ge ...

  5. Android在一个app中启动另一个App

    Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); Compon ...

  6. mysql 游标CURSOR

    FETCH cursor_works INTO num,provinceIDs,cityIDs,SourceID; 定义的变量值必须与 游标中的字段不同,一一对应 DECLARE cursor_wor ...

  7. Java集合类总结 (三)

    HashSet类 关于HashMap的实现细节 HashMap是用LinkedList实现的,每个list被称为一个桶(bucket),在hashmap中要查找一个元素,首先对传入的key进行散列,并 ...

  8. 20165219 2017-2018-2 《Java程序设计》第9周学习总结

    20165219 2017-2018-2 <Java程序设计>第9周学习总结 课本知识总结 URL类 URL类是java.net包中的一个重要的类,使用URL创建对象的应用程序称为客户端程 ...

  9. 1442: Neo 的简单字符串(字符串)

    1442: Neo 的简单字符串 时间限制: 10 Sec 内存限制: 128 MB 提交: 9 解决: 3 统计 题目描述 Neo 给你一系列字符串,请你输出字符串中的不同单词个数以及总单词个数. ...

  10. ORA-14402:更新分区关键字列将导致分区更改

    开启行迁移就好了:alter table TABLE_NAME enable row movement; 注意:表分区的时候要确定分区字段是否会UPDATE,如果会的话一定要开启行迁移,否则就会报这个 ...