• 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

  • 相关阅读:
    SSH防止超时的设置
    vuejs中v-bind绑定class时的注意事项
    js常用到的方法积累
    主流浏览器以及系统的判断
    理解Javascript的状态容器Redux
    可伸缩架构简短系列
    在Node.js中使用RabbitMQ系列一 Hello world
    在Node.js中使用RabbitMQ系列二 任务队列
    Javascript中的async await
    公钥,私钥和数字签名
  • 原文地址:https://www.cnblogs.com/craft0625/p/15014576.html
Copyright © 2020-2023  润新知