About the Displaying a TOCControl context menu Sample
[C#]
LayerVisibility.cs
using ESRI.ArcGIS.ADF.BaseClasses;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.SystemUI;
namespace ContextMenu
{
public sealed class LayerVisibility : BaseCommand, ICommandSubType
{
private IHookHelper m_hookHelper = new HookHelperClass();
private long m_subType;
public LayerVisibility()
{
}
public override void OnClick()
{
for (int i=0; i <= m_hookHelper.FocusMap.LayerCount - 1; i++)
{
if (m_subType == 1) m_hookHelper.FocusMap.get_Layer(i).Visible = true;
if (m_subType == 2) m_hookHelper.FocusMap.get_Layer(i).Visible = false;
}
m_hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);
}
public override void OnCreate(object hook)
{
m_hookHelper.Hook = hook;
}
public int GetCount()
{
return 2;
}
public void SetSubType(int SubType)
{
m_subType = SubType;
}
public override string Caption
{
get
{
if (m_subType == 1) return "Turn All Layers On";
else return "Turn All Layers Off";
}
}
public override bool Enabled
{
get
{
bool enabled = false; int i;
if (m_subType == 1)
{
for (i=0;i<=m_hookHelper.FocusMap.LayerCount - 1;i++)
{
if (m_hookHelper.ActiveView.FocusMap.get_Layer(i).Visible == false)
{
enabled = true;
break;
}
}
}
else
{
for (i=0;i<=m_hookHelper.FocusMap.LayerCount - 1;i++)
{
if (m_hookHelper.ActiveView.FocusMap.get_Layer(i).Visible == true)
{
enabled = true;
break;
}
}
}
return enabled;
}
}
}
}
[Visual Basic .NET]
LayerVisibility.vb
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Controls
Imports ESRI.ArcGIS.ADF.BaseClasses
Imports ESRI.ArcGIS.SystemUI
Public NotInheritable Class LayerVisibility
Inherits BaseCommand
Implements ICommandSubType
Private m_pHookHelper As New HookHelperClass
Private m_lSubType As Long
Public Sub New()
MyBase.New()
End Sub
Public Overrides Sub OnCreate(ByVal hook As Object)
m_pHookHelper.Hook = hook
End Sub
Public Overrides Sub OnClick()
Dim i As Integer
For i = 0 To m_pHookHelper.FocusMap.LayerCount - 1
If (m_lSubType = 1) Then
m_pHookHelper.FocusMap.Layer(i).Visible = True
ElseIf (m_lSubType = 2) Then
m_pHookHelper.FocusMap.Layer(i).Visible = False
End If
Next
m_pHookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, Nothing, Nothing)
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 Caption() As String
Get
If (m_lSubType = 1) Then
Return "Turn All Layers On"
Else
Return "Turn All Layers Off"
End If
End Get
End Property
Public Overrides ReadOnly Property Enabled() As Boolean
Get
Dim i As Integer
Dim bEnabled As Boolean
bEnabled = False
If (m_lSubType = 1) Then
For i = 0 To m_pHookHelper.FocusMap.LayerCount - 1
If (m_pHookHelper.FocusMap.Layer(i).Visible = False) Then
bEnabled = True
Exit For
End If
Next
ElseIf (m_lSubType = 2) Then
For i = 0 To m_pHookHelper.FocusMap.LayerCount - 1
If (m_pHookHelper.FocusMap.Layer(i).Visible = True) Then
bEnabled = True
Exit For
End If
Next
End If
Return bEnabled
End Get
End Property
End Class