I can set up a handler to catch the VisibilityChanged event of every map layer returned by:
pEnumLayer As IEnumLayer = My.ArcMap.Document.ActiveView.FocusMap.Layers(Nothing, False)
Then with each layer returned this works:
pLayerEvents As ILayerEvents_Event = pMapLayerReturned
Unless the layer is a TopologyLayer. If it is a TopologyLayer it's an invalid cast. It appears that TopologyLayer class doesn't use ILayerEvents. How then can I tell when the visibility of a TopologyLayer changes?