Construct a subclass inherited from GroupLayerClass, and construct a IGroupLayerEvent interface to monitor whether or not to add layers to the layer group.
public delegate void IGroupLayerEvents_ItemAddedEventHandler(object Item);
public delegate void IGroupLayerEvents_ItemDeletedEventHandler(object Item);
public interface IGroupLayerEvents
{
event IGroupLayerEvents_ItemAddedEventHandler ItemAdded;
event IGroupLayerEvents_ItemDeletedEventHandler ItemDeleted;
}
public class GroupLayerClassEx:GroupLayerClass,IGroupLayerEvents
{
public event IGroupLayerEvents_ItemAddedEventHandler ItemAdded;
public event IGroupLayerEvents_ItemDeletedEventHandler ItemDeleted;
public override void Add(ILayer layer)
{
base.Add(layer);
if (ItemAdded != null)
{
ItemAdded(layer);
}
}
public override void Clear()
{
if (ItemDeleted != null)
{
ICompositeLayer pCompositeLayer = this as ICompositeLayer;
for (int i = 0; i < pCompositeLayer.Count; i++)
{
ILayer pCurrentLayer = pCompositeLayer.get_Layer(i);
ItemDeleted(pCurrentLayer);
}
}
base.Clear();
}
public override void Delete(ILayer Layer)
{
base.Delete(Layer);
if (ItemDeleted != null)
{
ItemDeleted(Layer);
}
}
}