我有一个VSTO应用程序作为MS Word的加载项,我想将键盘快捷键设置为功能区按钮

问题描述 投票:6回答:2

[当我在C#Visual Studio 2008中开发此应用程序时,我问了同样的问题(实际上设法在MS论坛上找到了答案,为此我应该得到某种奖励)。 MS的答案是,将键盘快捷方式设置为您自己的方法的唯一方法是编写一个宏,该宏调用该方法(显然是通过COM),然后设置快捷方式以调用该宏。

这真的不是我想听到的答案。 VSTO使得可以很好地利用功能区等来构建一个非常好的应用程序,但是随后您就不得不麻烦通过COM公开整个内容,并通过宏在其中构建另一个接口。除了浪费时间之外,这完全避开了MS为支持VSTO加载项而内置的所有安全性。

我的问题是:这真的有必要(整个COM /宏),还是可以为我的功能区项分配键盘快捷键? Word 2007? Word 2010?

谢谢

ms-word vsto
2个回答
9
投票

为时已晚,但值得分享。

我在项目中使用了键盘快捷键。基本上,此快捷键应带有一个称为SignOff的WPF表单。通过单击功能区选项卡中的按钮或使用键盘快捷键(Ctrl + Shift + S),可以显示此WPF表单。

我需要在四个地方编写代码。

  1. 单击事件时调用功能区按钮的操作方法。

    public void btnInsertSignoff_Click(IRibbonControl control) 
    {
      InsertSignoff();//This method displays the sign off form 
    }
    
  2. 以下代码在Addin Startup / Document Change事件中将键盘快捷键与VBA代码绑定在一起

     private void ThisAddIn_Startup(object sender, System.EventArgs e)
     {
      Globals.ThisAddIn.Application.KeyBindings.Add(WdKeyCategory.wdKeyCategoryCommand,    "InsertSignOff ", Globals.ThisAddIn.Application.BuildKeyCode(WdKey.wdKeyControl,   WdKey.wdKeyShift, WdKey. wdKeyS));
     }
    

此链接显示了如何使用键盘快捷方式调用VBA代码。http://www.wordbanter.com/showthread.php?t=31813

我遵循了这个示例,但是在VSTO Addin Startup事件中代替了VBA,但是第二个参数“ InsertSignOff”是步骤4中的VBA方法。

  1. 编写另一种方法称为InsertSignOff(在将VSTO方法暴露给VBA之后)。

    [ComVisible(true)]
    public interface IAddInAdapter 
    {
       void InsertSignOff ();
    }
    
    
    [ComVisible(true)]
    [ClassInterface(ClassInterfaceType.None)]
    public class AddinAdapter : IAddInAdapter
    {
       public void InsertSignOff()
       {
          InsertSignoff();//This method displays the sign off form
       }
    }
    

此链接说明了如何将VSTO代码公开给VBAhttp://msdn.microsoft.com/en-us/library/bb608604.aspx

  1. 在用户模板位置“ C:\ Users \\ AppData \ Roaming \ Microsoft \ Templates”中创建了一个.dotm文件,其中包含以下VBA代码

    Sub InsertSignOff ()
        Dim addIn As COMAddIn
        Dim automationObject As Object
        Set addIn = Application.COMAddIns("Wordaddin.AddinAdapter")
        Set automationObject = addIn.Object
        automationObject.InsertSignOff  
    End Sub
    

希望这对某些人有帮助。


© www.soinside.com 2019 - 2024. All rights reserved.