问题:
在自己编写全部移除图层菜单时,使用IMap.ClearLayers()方法MapControl里面的地图清除了,但是Toc控件并未刷新。情况如下
1、未清除前:
2、清除后
3、代码
public void Excute()
{
if (m_BasicMap != null)
{
List<ILayer> listRemove = new List<ILayer>();
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<ILayer> listRemove = new List<ILayer>();
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();
}
}