ArcEngine-MapControl与TocControl全部移除图层不联动问题

问题:

在自己编写全部移除图层菜单时,使用IMap.ClearLayers()方法MapControl里面的地图清除了,但是Toc控件并未刷新。情况如下

1、未清除前:

ArcEngine-MapControl与TocControl全部移除图层不联动问题_第1张图片

2、清除后

ArcEngine-MapControl与TocControl全部移除图层不联动问题_第2张图片

 

3、代码

  public void Excute()
        {
            if (m_BasicMap != null)
            {
                List listRemove = new List();
                for (int i = m_BasicMap.LayerCount-1; i >=0; i--)
                {
                    var layer = m_App.FocusMapControl.Map.get_Layer(i);
                    listRemove.Add(layer);
                }

                m_BasicMap.ClearLayers();    // 清空图层

                (m_BasicMap as IActiveView).Refresh();
            }
        }

 

解决方案:

使用Imap.DeleteLayer(ILayer)接口一个个依次删除。

 public void Excute()
        {
            if (m_BasicMap != null)
            {
                List listRemove = new List();
                for (int i = m_BasicMap.LayerCount-1; i >=0; i--)
                {
                    var layer = m_App.FocusMapControl.Map.get_Layer(i);
                    listRemove.Add(layer);
                }

                //m_BasicMap.ClearLayers();
                foreach (var item in listRemove)
                {
                    m_BasicMap.DeleteLayer(item);
                    ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(item);
                }

                (m_BasicMap as IActiveView).Refresh();
            }
        }

 

 

 

 

 

 

 

 

你可能感兴趣的:(ArcEngine-MapControl与TocControl全部移除图层不联动问题)