![]() |
This document is archived and information here might be outdated. Recommended version. |
Assign a shortcut key to a specific tool.
///<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;
}
'''<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