西江月
路人甲
路人甲
  • 注册日期2010-03-14
  • 发帖数7
  • QQ
  • 铜币123枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2112回复:2

[求助][求助]AE中 为何我在TOCControl中删除图层后,而鸟瞰控件中的图层没有变化?

楼主#
更多 发布于:2011-09-12 23:58
为何我在TOCControl中删除或添加图层后,主控件中的图层发生变化,而鸟瞰控件中的图层没有变化?
测试的时候发现当直接添加数据   时,鸟瞰控件中也能添加上数据,再在TOCControl中删除数据,鸟瞰控件中也会删除数据。但如果先打开地图文档   后再添加或删除数据时鸟瞰控件中没有变化!帮助文档中说当移除图层时Map对象会触发此事件:
 
但我调试了一下,发现当打开地图文档再删除图层没有调用OnItemDeleted方法。
纠结中,求高手们指点指点!……
具体实现代码如下:在MainFrm中声名了全局变量: IActiveViewEvents_Event pActiveViewEvent;
主窗体加载时添加了如下代码:
private void MainFrm_Load(object sender, EventArgs e)
        {
            pActiveViewEvent = axMapControl1.Map as IActiveViewEvents_Event;
            pActiveViewEvent.ItemAdded+= new IActiveViewEvents_ItemAddedEventHandler(this .OnItemAdded );
            pActiveViewEvent.ItemDeleted += new IActiveViewEvents_ItemDeletedEventHandler(OnItemDeleted);
        }
OnItemDeleted的实现方法如下:
private void OnItemDeleted(object Item)
        {
            ILayer pLayer = Item as ILayer;
            IMap pMap = axMapControl2.Map;
            pMap.DeleteLayer(pLayer);
            IActiveView pActiveView = pMap as IActiveView;
            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
        }
OnItemAdded的实现方法:
     void OnItemAdded(object Item)
        {
            ILayer pLayer = Item as ILayer;
            if (pLayer == null)
                throw new NotImplementedException();
            axMapControl2.AddLayer(pLayer);
            axMapControl2.Refresh(esriViewDrawPhase.esriViewGeography, null, null);
        }

 



[此贴子已经被作者于2011-09-13 16:43:09编辑过]
喜欢0 评分0
西江月
路人甲
路人甲
  • 注册日期2010-03-14
  • 发帖数7
  • QQ
  • 铜币123枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2011-09-13 00:05
编辑了半天没编辑好
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2011-09-13 09:09
<p>使用插入代码工具,或者直接从文档里拷贝有格式的文字,就可以了。</p><p>你的问题是控件和toc没有同步更新?</p>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部