TocControl控件的主要做用是顯示當前加載的圖層有哪些、採用什麼樣的符號等,目的是使用戶對當前加載的數據和結構有一個整體的把握。與之相關聯的夥伴控件有MapControl,PageLayoutControl。編輯器
TOCControl 爲用戶提供了一個交互式的環境,若是 TOCControl 控件的夥伴控件是 MapControl 控件,當咱們將 TOCControl 控件中圖層刪掉是,MapControl 控件中相應的圖層也會被刪掉。工具
當地圖視圖和製圖視圖都存在的時候,TocControl控件要與PageLayoutControl控件進行綁定,MapControl的map和PageLayoutControl的map關聯,這樣才能確保地圖視圖和製圖視圖的數據保持一致。spa
[圖層樹-夥伴控件對應]設計
1、界面設計3d
一、在主界面上添加控件SplitContainer,將Dock屬性設置爲填充「Fill」,在左邊一個pannel裏面添加圖層樹TOCControl控件,code
二、在右邊的pannel裏面從工具箱裏添加一個TabControl控件,將Dock屬性設置爲填充「Fill」;視頻
而後右鍵TabControl控件修改屬性「Alignment」爲「Bottom」,blog
修改屬性「Dock」爲「Bottom」填充,使控件填充頁面教程
最後修改屬性,進入TabPage集合編輯器頁面,依次選擇左側的將tabPage1的Text修改成「地圖模式」,tabPage2的Text修改成「製圖模式」。而後肯定。事件
三、點擊地圖模式按鈕,添加MapControl控件,設置Dock爲「Fill」,修改屬性「Name」爲MapControlMain,而後再點擊製圖模式按鈕,添加PageLayoutControl控件,設置Dock爲Fill,設置Name爲PageLayoutControl1
2、圖層樹,地圖和製圖視圖綁定
一、界面設計好以後,首先在窗體初始化的時候進行地圖初始化,爲了圖層樹和地圖進行關聯,地圖和製圖數據同步,因此將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 }
二、地圖模式和製圖模式窗口切換
右鍵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 |
3、效果圖以下圖所示