"Text" CommandBar 并不总是出现在 Microsoft Word 中

"Text" CommandBar not always present in Microsoft Word

我正在为 Microsoft Word 构建 C# 加载项。我的目标是在右键菜单中添加一个按钮。在 "Text" CommandBar.

中添加一个 CommandBarButton 很容易
    Word.Application application;
    Office.CommandBar textCommandBar;
    Office.CommandBarButton myButton;

    private void InitContextMenuButton()
    {
        application.CustomizationContext = application.ActiveDocument;
        textCommandBar = application.CommandBars["Text"];
        myButton= textCommandBar.Controls.Add(Office.MsoControlType.msoControlButton, 1, "My Custom Button", 1, false) 
            as Office.CommandBarButton;
        myButton.Tag = "My Custom Button";
        myButton.accName = "My Custom Button";
        myButton.Caption = "My Custom Button";
        myButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(Button_Click);
        myButton.Visible = true;
    }

这在大多数情况下工作得很好。

我的问题是有时按钮并不总是存在。有时,当我单击列表或 table 时,"Text" CommandBar 似乎没有出现在上下文菜单中。

上下文菜单毕竟是上下文菜单:它们会根据 right-click 所在的位置而变化。 "Text" 菜单仅适用于 "plain text" 上下文。当 right-click 在 Table 单元格中时,会有一个不同的菜单。或者,如果标记了 spelling/grammar 个错误,您将得到一个不同的菜单。

因此您需要确定您的按钮应该出现在哪些上下文中并将其添加到所有这些上下文菜单中。

另请注意,从 2010 版开始,您不应使用 CommandBars 对象执行此操作。为此,您应该定义 Ribbon XML。