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

时间:2015-10-12 23:53:58

标签: c# office-interop office-addins

我正在为Microsoft Word构建一个C#加载项。我的目标是在右键菜单中添加一个按钮。很容易在" Text"中添加一个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;
    }

这项工作大部分时间都很好。

enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:1)

在所有上下文菜单之后,上下文菜单会根据右键单击的位置而改变。 “文本”菜单仅适用于“纯文本”上下文。当右键单击表格单元格时,会有一个不同的菜单。或者,如果标记了拼写/语法错误,您将获得一个不同的菜单。

因此,您需要确定按钮应显示在哪个上下文中,并将其添加到所有这些上下文菜单中。

请注意,自2010版以来,您不应该使用CommandBars对象执行此操作。您应该为此目的定义Ribbon XML。