ArcGIS Engine遍歷圖層,刪除空的要素集圖層

遍歷圖層,判斷是否爲要素集圖層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);
            }
        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章