||
所要实现的功能:
(1)当在TabControl中点击“地图制图“时,MapControl中的地图显示传递到PageLayoutControl;
(2)MapControl中的数据发生变化,PageLayoutControl要同步变化。
(3)MapControl中的数据显示范围发生变化,PageLayoutControl也要同步变化。
步骤:
(1)定义两个方法,CopyAndWriteMap(),repGeoMap()。
(2)定义TabControl选择PageLayoutControl的事件,如果选择了PageLayoutControl,就调用上述方法,否则不调用。
(3)控件的事件代码中调用定义的两个方法。
代码如下:
public void CopyAndWriteMap() { IObjectCopy objectCopy = new ObjectCopyClass(); object toCopyMap = axMapControl1.Map; object copiedMap = objectCopy.Copy(toCopyMap);// 把axMapControl1.Map定义为toCopyMap,然后复制到copiedMap中 object toOverwriteMap = axPageLayoutControl1.ActiveView.FocusMap; objectCopy.Overwrite(copiedMap, ref toOverwriteMap); axPageLayoutControl1.ActiveView.Refresh(); } public void repGeoMap() { IActiveView pActiveView = axPageLayoutControl1.ActiveView.FocusMap as IActiveView; IDisplayTransformation displayTransformation = pActiveView.ScreenDisplay.DisplayTransformation; displayTransformation.VisibleBounds = axMapControl1.Extent; axPageLayoutControl1.ActiveView.Refresh(); CopyAndWriteMap(); }
bool strUnion = false;
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { switch (this.tabControl1.SelectedIndex) { case 0: strUnion = false; break; case 1: strUnion = true; CopyAndWriteMap(); break; default: break; } }
private void axMapControl1_OnAfterScreenDraw(object sender, IMapControlEvents2_OnAfterScreenDrawEvent e) { if (strUnion == false) return; repGeoMap(); } private void axMapControl1_OnViewRefreshed(object sender, IMapControlEvents2_OnViewRefreshedEvent e) { if (strUnion == false) return; CopyAndWriteMap(); } private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e) { TbGeoMap(); if (strUnion == false) return; CopyAndWriteMap(); }
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 22:44
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社