About the Create a custom selection extension by extending ArcObjects Sample
[C#]
SelectionToolPalette.cs
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.ADF.BaseClasses;
using ESRI.ArcGIS.ADF.CATIDs;
using ESRI.ArcGIS.Framework;
using ESRI.ArcGIS.ArcMapUI;
using ESRI.ArcGIS.SystemUI;
namespace SelectionCOMSample
{
/// <summary>
/// Summary description for SelectionToolPalette.
/// </summary>
[Guid("23a0177f-f011-434a-b7f3-80d718d93fd0")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("SelectionCOMSample.SelectionToolPalette")]
public sealed class SelectionToolPalette : BaseCommand, IToolPalette
{
#region COM Registration Function(s)
[ComRegisterFunction()]
[ComVisible(false)]
static void RegisterFunction(Type registerType)
{
// Required for ArcGIS Component Category Registrar support
ArcGISCategoryRegistration(registerType);
//
// TODO: Add any COM registration code here
//
}
[ComUnregisterFunction()]
[ComVisible(false)]
static void UnregisterFunction(Type registerType)
{
// Required for ArcGIS Component Category Registrar support
ArcGISCategoryUnregistration(registerType);
//
// TODO: Add any COM unregistration code here
//
}
#region ArcGIS Component Category Registrar generated code
/// <summary>
/// Required method for ArcGIS Component Category registration -
/// Do not modify the contents of this method with the code editor.
/// </summary>
private static void ArcGISCategoryRegistration(Type registerType)
{
string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
MxCommands.Register(regKey);
}
/// <summary>
/// Required method for ArcGIS Component Category unregistration -
/// Do not modify the contents of this method with the code editor.
/// </summary>
private static void ArcGISCategoryUnregistration(Type registerType)
{
string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);
MxCommands.Unregister(regKey);
}
#endregion
#endregion
private IApplication m_application;
public SelectionToolPalette()
{
base.m_category = "Developer Samples";
base.m_caption = "Selection Palette";
base.m_name = "ESRI_SelectionCOMSample_ToolPalette";
}
#region Overriden Class Methods
/// <summary>
/// Occurs when this command is created
/// </summary>
/// <param name="hook">Instance of the application</param>
public override void OnCreate(object hook)
{
if (hook == null)
return;
m_application = hook as IApplication;
//Disable if it is not ArcMap
if (hook is IMxApplication)
base.m_enabled = true;
else
base.m_enabled = false;
}
/// <summary>
/// Occurs when this command is clicked
/// </summary>
public override void OnClick()
{
}
#endregion
#region IToolPalette Members
public bool MenuStyle
{
get { return false; }
}
public int PaletteColumns
{
get { return 2; }
}
public int PaletteItemCount
{
get { return 3; }
}
public bool TearOff
{
get { return false; }
}
public string get_PaletteItem(int pos)
{
switch (pos)
{
case 0:
return "esriArcMapUI.SelectByPolygonTool";
case 1:
return "esriArcMapUI.SelectByLayerCommand";
case 2:
return "SelectionCOMSample.SelectByLineTool";
default:
return "";
}
}
#endregion
}
}
[Visual Basic .NET]
SelectionToolPalette.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Runtime.InteropServices
Imports ESRI.ArcGIS.ADF.BaseClasses
Imports ESRI.ArcGIS.ADF.CATIDs
Imports ESRI.ArcGIS.Framework
Imports ESRI.ArcGIS.ArcMapUI
Imports ESRI.ArcGIS.SystemUI
Namespace SelectionCOMSample
''' <summary>
''' Summary description for SelectionToolPalette.
''' </summary>
<Guid("23a0177f-f011-434a-b7f3-80d718d93fd0"), ClassInterface(ClassInterfaceType.None), ProgId("SelectionCOMSample.SelectionToolPalette")> _
Public NotInheritable Class SelectionToolPalette
Inherits BaseCommand
Implements IToolPalette
#Region "COM Registration Function(s)"
<ComRegisterFunction(), ComVisible(False)> _
Private Shared Sub RegisterFunction(ByVal registerType As Type)
' Required for ArcGIS Component Category Registrar support
ArcGISCategoryRegistration(registerType)
'
' TODO: Add any COM registration code here
''
End Sub
<ComUnregisterFunction(), ComVisible(False)> _
Private Shared Sub UnregisterFunction(ByVal registerType As Type)
' Required for ArcGIS Component Category Registrar support
ArcGISCategoryUnregistration(registerType)
'
' TODO: Add any COM unregistration code here
''
End Sub
#Region "ArcGIS Component Category Registrar generated code"
''' <summary>
''' Required method for ArcGIS Component Category registration -
''' Do not modify the contents of this method with the code editor.
''' </summary>
Private Shared Sub ArcGISCategoryRegistration(ByVal registerType As Type)
Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID)
MxCommands.Register(regKey)
End Sub
''' <summary>
''' Required method for ArcGIS Component Category unregistration -
''' Do not modify the contents of this method with the code editor.
''' </summary>
Private Shared Sub ArcGISCategoryUnregistration(ByVal registerType As Type)
Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID)
MxCommands.Unregister(regKey)
End Sub
#End Region
#End Region
Private m_application As IApplication
Public Sub New()
MyBase.m_category = "Developer Samples"
MyBase.m_caption = "Selection Palette"
MyBase.m_name = "ESRI_SelectionCOMSample_ToolPalette"
End Sub
#Region "Overridden Class Methods"
''' <summary>
''' Occurs when this command is created
''' </summary>
''' <param name="hook">Instance of the application</param>
Public Overrides Sub OnCreate(ByVal hook As Object)
If hook Is Nothing Then
Return
End If
m_application = TryCast(hook, IApplication)
'Disable if it is not ArcMap
If TypeOf hook Is IMxApplication Then
MyBase.m_enabled = True
Else
MyBase.m_enabled = False
End If
End Sub
''' <summary>
''' Occurs when this command is clicked
''' </summary>
Public Overrides Sub OnClick()
End Sub
#End Region
#Region "IToolPalette Members"
Public ReadOnly Property MenuStyle() As Boolean Implements ESRI.ArcGIS.SystemUI.IToolPalette.MenuStyle
Get
Return False
End Get
End Property
Public ReadOnly Property PaletteColumns() As Integer Implements ESRI.ArcGIS.SystemUI.IToolPalette.PaletteColumns
Get
Return 2
End Get
End Property
Public ReadOnly Property PaletteItemCount() As Integer Implements ESRI.ArcGIS.SystemUI.IToolPalette.PaletteItemCount
Get
Return 3
End Get
End Property
Public ReadOnly Property TearOff() As Boolean Implements ESRI.ArcGIS.SystemUI.IToolPalette.TearOff
Get
Return False
End Get
End Property
Public ReadOnly Property PaletteItem(ByVal pos As Integer) As String Implements ESRI.ArcGIS.SystemUI.IToolPalette.PaletteItem
Get
Select Case pos
Case 0
Return "esriArcMapUI.SelectByPolygonTool"
Case 1
Return "esriArcMapUI.SelectByLayerCommand"
Case 2
Return "SelectionCOMSample.SelectByLineTool"
Case Else
Return ""
End Select
End Get
End Property
#End Region
End Class
End Namespace