[GIS] How to catch when layers visibility change in ArcGIS

arcgis-10.0arcgis-enginearcobjectsdevelopment

I'm trying to regenerate a Legend in a Pagelayout whenever the layers visibility are changed in the TocControl. What is the best way to catch when a layer visibility is changed?

Best Answer

Watch for the VisibilityChanged event on the feature layer that you want to track.

Something like the following (taken from here):

private ILayerEvents_Event pLayerEvents;

void mActiveViewEvents_ItemAdded(object Item)
{
    if (Item is ILayerEvents_Event)            
    {
        pLayerEvents = Item as ILayerEvents_Event;
        pLayerEvents.VisibilityChanged += new ILayerEvents_VisibilityChangedEventHandler(pLayerEvents_VisibilityChanged);
    }
}

void pLayerEvents_VisibilityChanged(bool currentState)
{
    //do something here
}

A little more information is available here and here.

The links provided above point to ArcGIS 9.x content. If you plan on using ArcGIS 10, documentation is available here.