遍歷圖層,判斷是否爲要素集圖層ICompositeLayer和count是否爲0,從下往上刪,第一遍刪除最下層的空要素集,直到沒有空要素集結束。
//刪除空要素集
private IList<ILayer> kongLayer = new List<ILayer>();//存儲空要素集
private void DelLayer(IMapControlDefault mapcontrol)
{
ICompositeLayer pCompositeLayer;
for (int i = 0; i < mapcontrol.LayerCount; i++)
{
if (mapcontrol.get_Layer(i) is ICompositeLayer)
{
pCompositeLayer = mapcontrol.get_Layer(i) as ICompositeLayer;
if (pCompositeLayer.Count > 0)
{
Togetlayer(pCompositeLayer);
}
else
{
kongLayer.Add(mapcontrol.get_Layer(i));
}
}
}
for (int i = 0; i < kongLayer.Count; i++)
{
mapcontrol.Map.DeleteLayer(kongLayer[i]);//刪除空要素集
}
//一直到沒有空要素集跳出
if (kongLayer.Count > 0)
{
kongLayer.Clear();
DelLayer(mapcontrol);
}
}
//遞歸遍歷所有要素集
private void Togetlayer(ICompositeLayer pCompositeLayer)
{
ILayer dellayer;
ICompositeLayer icolayer;
ICompositeLayer pcomLayer = pCompositeLayer;
if (pcomLayer.Count > 0)
{
for (int i = 0; i < pcomLayer.Count; i++)
{
if (pcomLayer.get_Layer(i) is ICompositeLayer)
{
icolayer = pcomLayer.get_Layer(i) as ICompositeLayer;
Togetlayer(icolayer);
}
}
}
else
{
dellayer = pcomLayer as ILayer;
kongLayer.Add(dellayer);
}
}