HOW TO:繫結命令至多個快速鍵的組合
更新:2007 年 11 月
除了將單一快速鍵組合繫結至命令外,您也可以將多個快速鍵繫結至命令。例如,如果有兩位使用者處理同一個專案,但是各自喜歡用不同的快速鍵發出同樣的命令,這麼做將會很有用。若要這麼做,可以在 Object 型別的陣列中,將快速鍵當做字串元素傳遞。
注意事項: |
---|
根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。已使用 [一般開發設定] 開發了這些程序。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要繫結命令至多個快速鍵
請使用 [Visual Studio 增益集精靈] 建立新的增益集 (Add-in)。命名專案,再按 [確定] 啟動精靈。
如需使用 [Visual Studio 增益集精靈] 的詳細資訊,請參閱 HOW TO:建立增益集。
在 [選取程式語言] 頁上,選取 [使用 Visual C# 建立增益集] 以執行以下的 Visual C# 範例,或選取 [使用 Visual Basic 建立增益集] 以執行 Visual Basic 範例。
在 [Visual Studio 增益集精靈] 產生之程式碼的 Connect 類別中,貼上以下的範例函式。
若要複製預設的鍵盤設定,請移至 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE。
以滑鼠右鍵按一下其中一個 vsk 檔,然後從快速鍵功能表中選取 [複製]。
將複製的檔案貼入同一個資料夾中。
複製的檔案會命名為「複本 - <vsk-file name>」。
重新命名複製的檔案。
若要確認新的 vsk 檔是否顯示在鍵盤繫結清單中,請在 Visual Studio 中,按一下 [工具] 功能表上的 [選項]。
在 [選項] 對話方塊的左窗格中,展開 [環境] 資料夾並選取 [鍵盤]。
請確認您在步驟 7 中重新命名的 vsk 檔案名稱,顯示在 [套用下列其他鍵盤對應配置] 下拉式功能表中。
在執行增益集範例之前,請確定鍵盤繫結必須設為 [(預設)]。作法是在 [選項] 對話方塊中,按一下 [鍵盤] 窗格的 [重設]。
在增益集範例的 prop.Value = "< Filename.vsk>" 步驟中,以步驟 7 中所指定的新鍵盤配置名稱取代 <Filename.vsk>。
從 OnConnection 方法呼叫函式,如 HOW TO:編譯和執行 Automation 物件模型程式碼範例所述。
建置增益集。
若要執行增益集,請按一下 [工具] 功能表上的 [增益集管理員]、選取您建立的增益集,然後按一下 [確定]。
該命令便會繫結至兩個不同的快速鍵。按 CTRL+SHIFT+ALT+Y 或 CTRL+SHIFT+ALT+X 顯示 [新增檔案] 對話方塊。
範例
在下列範例中,會用兩個新的快速鍵繫結取代現有的快速鍵繫結。
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
BindSingle(_applicationObject)
End Sub
Sub BindSingle(ByVal dte As DTE2)
' Adds two new keybindings to a command.
Dim cmds As Commands
Dim cmd As Command
Dim props As EnvDTE.Properties = DTE.Properties("Environment", _"Keyboard")
Dim prop As EnvDTE.Property
Dim bindings(1) As Object
' Make a writeable copy of the default keymapping scheme.
prop = props.Item("SchemeName")
prop.Value = "<FileName.vsk>"
' Assign the two shortcut key combinations, CTRL+SHIFT+ALT+Y and
' CTRL+SHIFT+ALT+X, to the two bindings array elements.
bindings(0) = "Global:: CTRL+SHIFT+ALT+Y"
bindings(1) = "Global:: CTRL+SHIFT+ALT+X"
' Set references to the Commands collection and the File.NewFile
' command.
cmds = DTE.Commands
cmd = cmds.Item("File.NewFile")
' Assign the contents of the bindings array to the Bindings
' property.
cmd.Bindings = bindings
End Sub
public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
// Pass the applicationObject member variable to the code example.
BindMultiple(_applicationObject );
}
public void BindMultiple( DTE2 dte )
{
// Adds two new keybindings to a command.
Commands cmds = null;
Command cmd = null;
EnvDTE.Properties props = dte.get_Properties( "Environment",
"Keyboard");
EnvDTE.Property prop = null;
Object[] bindings = new Object[ 2 ];
// Make a writeable copy of the default keymapping scheme.
prop = props.Item( "SchemeName" );
prop.Value = "<FileName.vsk>";
// Assign the two shortcut key combinations, CTRL+SHIFT+ALT+Y and
// CTRL+SHIFT+ALT+X, to the two bindings array elements.
bindings[ 0 ] = "Global:: CTRL+SHIFT+ALT+Y";
bindings[ 1 ] = "Global:: CTRL+SHIFT+ALT+X";
// Set references to the Commands collection and the File.NewFile
// command.
cmds = dte.Commands;
cmd = cmds.Item( "File.NewFile", -1 );
// Assign the contents of the bindings array to the Bindings
// property.
cmd.Bindings = bindings;
}