About the Displaying a TOCControl context menu Sample
[C#]
LayerSelectable.cs
using ESRI.ArcGIS.ADF.BaseClasses; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.SystemUI; namespace ContextMenu { public sealed class LayerSelectable : BaseCommand, ICommandSubType { private IMapControl3 m_mapControl; private long m_subType; public LayerSelectable() { } public override void OnClick() { IFeatureLayer layer = (IFeatureLayer) m_mapControl.CustomProperty; if (m_subType == 1) layer.Selectable = true; if (m_subType == 2) layer.Selectable = false; } public override void OnCreate(object hook) { m_mapControl = (IMapControl3) hook; } public override bool Enabled { get { ILayer layer = (ILayer) m_mapControl.CustomProperty; if (layer is IFeatureLayer) { IFeatureLayer featureLayer = (IFeatureLayer) layer; if (m_subType == 1) return !featureLayer.Selectable; else return featureLayer.Selectable; } else { return false; } } } public int GetCount() { return 2; } public void SetSubType(int SubType) { m_subType = SubType; } public override string Caption { get { if (m_subType == 1) return "Layer Selectable"; else return "Layer Unselectable"; } } } }
[Visual Basic .NET]
LayerSelectable.vb
Imports ESRI.ArcGIS.Carto Imports ESRI.ArcGIS.Controls Imports ESRI.ArcGIS.ADF.BaseClasses Imports ESRI.ArcGIS.SystemUI Public NotInheritable Class LayerSelectable Inherits BaseCommand Implements ICommandSubType Private m_pMapControl As IMapControl3 Private m_lSubType As Long Public Sub New() MyBase.New() End Sub Public Overrides Sub OnCreate(ByVal hook As Object) m_pMapControl = hook End Sub Public Overrides Sub OnClick() Dim pLayer As IFeatureLayer pLayer = m_pMapControl.CustomProperty If (m_lSubType = 1) Then pLayer.Selectable = True If (m_lSubType = 2) Then pLayer.Selectable = False End Sub Public Function GetCount() As Integer Implements ESRI.ArcGIS.SystemUI.ICommandSubType.GetCount Return 2 End Function Public Sub SetSubType(ByVal SubType As Integer) Implements ESRI.ArcGIS.SystemUI.ICommandSubType.SetSubType m_lSubType = SubType End Sub Public Overrides ReadOnly Property Enabled() As Boolean Get Dim pLayer As ILayer pLayer = m_pMapControl.CustomProperty If (TypeOf pLayer Is IFeatureLayer) Then Dim pFeatureLayer As IFeatureLayer pFeatureLayer = pLayer If (m_lSubType = 1) Then Return Not pFeatureLayer.Selectable If (m_lSubType = 2) Then Return pFeatureLayer.Selectable Else Return False End If End Get End Property Public Overrides ReadOnly Property Caption() As String Get If (m_lSubType = 1) Then Return "Layer Selectable" Else Return "Layer Unselectable" End If End Get End Property End Class