Visual Studio 扩展入门(六)菜单篇 下


IDE在对自定义菜单的扩展上,还提供了更方便和人性化的操作,如:绑定快捷键、为命令添加自定义图标、本地化语言。

一、示例一:绑定快捷键

验证键盘快捷方式的可用性

  1. 工具>选项>环境>键盘
  2. 确保将使用新快捷方式设置为全局
  3. 光标选中“按快捷键”输入框,按下要使用的键盘快捷键。若快捷方式已被占用,则当前使用的快捷方式框将显示快捷方式当前调用的命令。
  4. 尝试不同的键组合,直到找到未映射的组合。


1、创建菜单命令

  1. 创建 VSIX 项目模板,并命名为KeyBindingButton。
  2. 通过" Visual c # 项> Extensibility(扩展性) > Command(命令)",添加自定义命令 KeyBindingCommand.cs。

此时解决方案目录如下:
image.png
2、修改.vsct文件为KeyBindingCommand命令创建快捷键
元素和元素之间添加元素节点,如下:

  <KeyBindings>
	  <KeyBinding guid="guidKeyBindingButtonPackageCmdSet" id="KeyBindingCommandId" editor="guidVSStd97" key1="1" mod1="CONTROL" key2 ="2" mod2="ALT"/>
  </KeyBindings>

其中,guidid属性设置为要调用的命令的属性。
mod1属性设置为CONTROL、ALT或SHIFT键。(最好少用shift键,因为大小写切换会常用)。
key1可以使用虚拟键代码
如果您的键盘快捷键需要两个以上的键,请设置mod2key2属性。

  • 若快捷键命令在 Visual Studio 编辑器中用,请将editor属性设置为guidVSStd97
  • 若仅在自定义编辑器中可用,请将editor属性设置为自定义编辑器的名称。

二、示例二:为命令添加自定义图标

在示例一的基础之上,修改快捷键命令的图标。
1、设计图标
图标要求:

  • 尺寸:16像素x 16 像素,允许使用多个位图横向排列。如下:

KeyBindingCommand.png

  • 颜色模式:8位颜色深度 (256 颜色) 或32位颜色深度 (真彩色) ,若使用8位颜色深度,请使用洋红色 RGB(255,0,255) 作为透明度,建议使用32位颜色深度。


2、修改.vsct文件添加图标信息


添加添加 <GuidSymbol>元素,名称属性为 testIcon 。(通过工具 > "创建 guid",然后选择 "注册表格式" 并单击 "复制)为value 属性赋值,我的IDE生成为

{BD266F4F-3EBD-4325-8A5A-7E261BA79808}

代码如下:

    <GuidSymbol name="testIcon" value="{BD266F4F-3EBD-4325-8A5A-7E261BA79808}">
	    <IDSymbol name="testIcon1" value="1" />
    </GuidSymbol>
  • name:图标ID
  • value:指示其在位图条带上的位置,若只有一个图标设为1。


添加<Bitmap>元素,在.vsct文件中创建。表示包含图标的位图。

<Bitmap guid="testIcon" href="Resourcespen.png" usedList="testIcon1"/>
  • guid:指向<GuidSymbol>的name属性
  • href:设置位图文件的相对路径
  • usedList:将<IDSymbol>元素。 此属性指定要在 VSPackage 中使用的图标,不在列表中的图标被排除,用逗号将多个图标分隔开,如:usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows, bmpPicStrikethrough"。

修改<Button>元素中的<Icon>元素节点如下:

      <Button guid="guidKeyBindingButtonPackageCmdSet" id="KeyBindingCommandId" priority="0x0100" type="Button">
        <Parent guid="guidKeyBindingButtonPackageCmdSet" id="MyMenuGroup" />
        <Icon guid="testIcon" id="testIcon1" />
        <Strings>
          <ButtonText>Invoke KeyBindingCommand</ButtonText>
        </Strings>
      </Button>

此时运行调试,效果如下:

image.png


三、本地化语言

请直接参考官方示例

博客的示例源码:https://github.com/21thCenturyBoy/VSIX_HelloWorld

原文地址:https://www.cnblogs.com/craft0625/p/15014576.html