Ele*_*ios 3 .net c# vb.net visual-studio visual-studio-sdk
在C#或VB.Net 中,使用 Visual Studio Package,我想为 a 分配一个自定义键盘快捷键CommandBarButton,例如Ctrl + E + R,然后,当按下时,关联的CommandBarButton应该调用它的Execute方法(我想) .
我怎么能做到?。
(请避免上面的问题,该问题已得到解答。)
实际上我使用的是vsct文件,然后我的键绑定是这样的:
<KeyBindings>
<KeyBinding guid="guidMainCmdSet" id="cmdidMyCommand" editor="guidVSStd97"
mod1="Control" key1="E"
mod2="Control" key2="R"/>
</KeyBindings>
Run Code Online (Sandbox Code Playgroud)
MSDN解释说这guidVSStd97是全局的,它似乎影响到 IDE 的所有部分:
https://msdn.microsoft.com/en-us/library/bb165973%28v=vs.90%29.aspx
要在全局范围内定义键绑定,请使用 guidVSStd97 的编辑器 ID 值。
我的扩展程序适用于代码窗口的选定文本,因此很奇怪,例如在解决方案资源管理器中,或者在加载任何项目时,我都可以按下热键。
然后,我希望只能在Code Window Editor 中按该热键 (Ctrl+E+R) 。
我的问题是:
代码窗口编辑器的编辑器 ID 是哪个?
额外要求:
我需要一个MSDN参考来查看更多相关的编辑器 ID,我找不到任何关于它的信息。
在 Visual Studio 中,键盘快捷键与命令相关联,而不是直接与 CommandBarButtons 相关联。从技术上讲,它们称为键盘绑定,并在您声明命令的 .vsct 文件中声明。请参阅KeyBindings 元素
编辑:您必须使用:
<KeyBinding guid="guidVSMyPackageCmdSet" id="cmdidMyCommand" editor="guidSourceCodeTextEditor" mod1="Control" key1="X" mod2="Control" key2="X"/>
Run Code Online (Sandbox Code Playgroud)
<GuidSymbol name ="guidVisualBasicEditor" value="{2c015c70-c72c-11d0-88c3-00a0c9110049}" />
<GuidSymbol name ="guidSourceCodeTextWithEncodingEditor" value="{c7747503-0e24-4fbe-be4b-94180c3947d7}" />
<GuidSymbol name ="guidSourceCodeTextEditor" value="{8b382828-6202-11d1-8870-0000f87579d2}" />
Run Code Online (Sandbox Code Playgroud)
...
其中 guidSourceCodeTextEditor 可以是您在 <Symbols> 部分定义的任何名称,您必须从 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0Exp_Config\Editors 获取其值。运行包后,如果您转到“工具”>“选项”窗口,“环境”>“键盘”部分,在“显示命令包含”中键入命令的名称,您应该会在列表中看到带有括号之间的编辑器的快捷方式,就好像您有从“使用新快捷方式”列表中选择它。这让我们产生了一个问题,如果每个 Visual Studio 版本的 guid 都相同。AFAIK,这不能保证(没有什么可以阻止 Microsoft 在新版本中更改 guid),但它们可能是相同的。我现在无法验证,因为我使用的计算机只有 VS 2013。
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |