TocControl控件简介
TocControl控件的主要作用是显示当前加载的图层有哪些、采用什么样的符号等,目的是使用户对当前加载的数据有一个总体的把握。与之相关联的伙伴控件有:MapControl,PageLayoutControl,ReaderControl,SceneControl,GlobeControl等。
一、TOCControl与数据视图的关联
关联的方式有两种,一种是代码的绑定,第二种是TOCControl控件的属性表中设置。
属性设置:在General选项卡中选择Buddy中进行关联。
代码绑定:axTOCControl.SetBuddyControl(mainMapControl);
二、图层显示顺序的调整
在应用中,有时需要对图层进行顺序调整,以免放生盖压导致部分图层不能显示,图层顺序的调整也有两种方法:
属性设置:通过属性选项卡General下的复选框Enable Layer Drag and Drop,即可实现图层的拖拽功能。
代码实现:分别在TOCControl控件的OnMouseDown和OnMouseUp两个事件设置,及HitTest()方法;
HitTest()方法的参数如下:
1 Public void HitTest( 3 int X,//当鼠标在TOCControl中按下时,参照TOCControl左上角为原点,以像素为单位, 4 int Y, //同上,返回鼠标的y坐标 5 ref esriTOCControlItem ItemType,//枚举常量 6 ref IBasicMap BasicMap,//绑定MapControl中的IBasicMap对象 7 ref ILayer Layer,//被点击的图层对象 8 ref object Unk,//图例组对象 9 ref object Data);//图例组中图例类的索引,根据索引和图例组可获得特定的图例类
ITOCControl接口的HitTest()方法可以返回TOCControl中点击坐标点处的对象类型ItemType。esriTOCControlItem类型对应的关系如下表:
对象 | 值 | 说明 |
esriTOCControlItemNone | 0 | 没有对象 |
esriTOCControlItemMap | 1 | Map对象 |
esriTOCControlItemLayer | 2 | Layer对象 |
esriTOCControlItemHeading | 3 | 对象的标题 |
esriTOCControlItemLegendClass | 4 | LegendClass |
三、实现思路
1)在TOCControl中,当鼠标点击时即在OnMouseDown事件中,拾取需要调整的图层,当鼠标弹起时即OnMouseUp事件中,获得图层移到位置的图层索引号。
2)使用IMap接口提供MoveLayer方法,将需要调整显示顺序的图层移动目标位置。
3)使用TOCControl的Update()方法,更新TOCControl控件中的图层顺序。