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