Assign a shortcut key to a specific tool.
[C#]
///<summary>Assign a shortcut key to a specific tool.</summary>
///
///<param name="application">An IApplication interface.</param>
///<param name="shortcutKey">A System.Windows.Forms.Keys class that is the key on the keyboard to be the shortcut. Example: System.Windows.Forms.Keys.Z</param>
///<param name="commandName">A System.String that is the name of the command to return. Example: "esriArcMapUI.ZoomInTool"</param>
///
///<returns>A System.Boolean that gives the result of adding the shortcut key to the tool, where true = success or false = failure</returns>
///
///<remarks>Refer to the EDN document http://edndoc.esri.com/arcobjects/9.1/default.asp?URL=/arcobjects/9.1/ArcGISDevHelp/TechnicalDocuments/Guids/ArcMapIds.htm for a listing of available CLSID's and ProgID's that can be used as the commandName parameter.</remarks>
public System.Boolean AssignShortcutKeyToCommand(ESRI.ArcGIS.Framework.IApplication application, System.Windows.Forms.Keys shortcutKey, System.String commandName)
{
// Define key combination to be assigned
System.Windows.Forms.Keys key = shortcutKey; // example: System.Windows.Forms.Keys.Z;
System.Boolean keyCtrl = true;
System.Boolean keyAlt = true;
System.Boolean keyShift = false;
//You should test if key combination has already been used by another command
//before assigning. Otherwise, it has to be removed first.
ESRI.ArcGIS.Framework.IAcceleratorTable acceleratorTable = application.Document.Accelerators;
ESRI.ArcGIS.Framework.IAccelerator accelerator = acceleratorTable.FindByKey((System.Int32)key, keyCtrl, keyAlt, keyShift);
if (accelerator == null)
{
ESRI.ArcGIS.esriSystem.UID uid = new ESRI.ArcGIS.esriSystem.UIDClass();
//Command to be assigned to
uid.Value = commandName; // example: "esriArcMapUI.ZoomInTool";
System.Boolean isAssigned = acceleratorTable.Add(uid, (System.Int32)key, keyCtrl, keyAlt, keyShift);
return isAssigned;
}
return false;
}
[Visual Basic .NET]
'''<summary>Assign a shortcut key to a specific tool.</summary>
'''
'''<param name="application">An IApplication interface.</param>
'''<param name="shortcutKey">A System.Windows.Forms.Keys class that is the key on the keyboard to be the shortcut. Example: System.Windows.Forms.Keys.Z</param>
'''<param name="commandName">A System.String that is the name of the command to return. Example: "esriArcMapUI.ZoomInTool"</param>
'''
'''<returns>A System.Boolean that gives the result of adding the shortcut key to the tool, where true = success or false = failure</returns>
'''
'''<remarks>Refer to the EDN document http://edndoc.esri.com/arcobjects/9.1/default.asp?URL=/arcobjects/9.1/ArcGISDevHelp/TechnicalDocuments/Guids/ArcMapIds.htm for a listing of available CLSID's and ProgID's that can be used as the commandName parameter.</remarks>
Public Function AssignShortcutKeyToCommand(ByVal application As ESRI.ArcGIS.Framework.IApplication, ByVal shortcutKey As System.Windows.Forms.Keys, ByVal commandName As System.String) As System.Boolean
' Define key combination to be assigned
Dim key As System.Windows.Forms.Keys = shortcutKey ' example: System.Windows.Forms.Keys.Z;
Dim keyCtrl As System.Boolean = True
Dim keyAlt As System.Boolean = True
Dim keyShift As System.Boolean = False
' You should test if key combination has already been used by another command
' before assigning. Otherwise, it has to be removed first.
Dim acceleratorTable As ESRI.ArcGIS.Framework.IAcceleratorTable = application.Document.Accelerators
Dim accelerator As ESRI.ArcGIS.Framework.IAccelerator = acceleratorTable.FindByKey(CType(key, System.Int32), keyCtrl, keyAlt, keyShift)
If accelerator Is Nothing Then
Dim uid As ESRI.ArcGIS.esriSystem.UID = New ESRI.ArcGIS.esriSystem.UIDClass
' Command to be assigned to
uid.Value = commandName ' example: "esriArcMapUI.ZoomInTool";
Dim isAssigned As System.Boolean = acceleratorTable.Add(uid, CType(key, System.Int32), keyCtrl, keyAlt, keyShift)
Return isAssigned
End If
Return False
End Function