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控件中的圖層順序。