C# MS Word插件,添加一个按钮,右键单击所选文本时弹出

C# MS Word插件,添加一个按钮,右键单击所选文本时弹出,c#,word-2007,shared-addin,C#,Word 2007,Shared Addin,我正在为MS Word 2007编写一个共享加载项。我想添加一个按钮,当右键单击所选文本时弹出。附加的快照应该清楚地说明这一点 当前,用户必须选择文本,然后单击自定义控件上的按钮。如果在选择文本后,他/她可以右键单击文本并按下弹出窗口中的相关按钮,则会容易得多 是如何在VBA中实现的。这与使用COM和可能创建word加载项非常相似,我还没有尝试过它,尽管您基本上需要找到上下文菜单控件并将一项添加到您的函数中 是如何在VBA中实现的。这与使用COM和可能创建word加载项非常相似,我还没有尝试过它

我正在为MS Word 2007编写一个共享加载项。我想添加一个按钮,当右键单击所选文本时弹出。附加的快照应该清楚地说明这一点

当前,用户必须选择文本,然后单击自定义控件上的按钮。如果在选择文本后,他/她可以右键单击文本并按下弹出窗口中的相关按钮,则会容易得多


是如何在VBA中实现的。这与使用COM和可能创建word加载项非常相似,我还没有尝试过它,尽管您基本上需要找到上下文菜单控件并将一项添加到您的函数中

是如何在VBA中实现的。这与使用COM和可能创建word加载项非常相似,我还没有尝试过它,尽管您基本上需要找到上下文菜单控件并将一项添加到您的函数中

您需要扩展正确的上下文菜单。以下链接用文字描述了如何实现这一点,没有任何源代码:

也许这对编码有点帮助。我自己还没有试过,但它可能指向正确的方向

祝你好运

编辑:

它必须是功能区样式的关联菜单还是普通关联菜单中的按钮就足够了? 如果正常菜单正常,您可以使用以下方法C:

 Microsoft.Office.Core.CommandBar cb = this.Application.CommandBars["Text"];

 Office.CommandBarControl newButton = cb.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing, missing);  
 newButton.Caption = "Test";
 newButton.Visible = true;
 newButton.Enabled = true;

你可以用VSTO实现这一点,我不确定它是否与共享插件技术完全相同,但也许它确实有帮助

您需要扩展正确的上下文菜单。以下链接用文字描述了如何实现这一点,没有任何源代码:

也许这对编码有点帮助。我自己还没有试过,但它可能指向正确的方向

祝你好运

编辑:

它必须是功能区样式的关联菜单还是普通关联菜单中的按钮就足够了? 如果正常菜单正常,您可以使用以下方法C:

 Microsoft.Office.Core.CommandBar cb = this.Application.CommandBars["Text"];

 Office.CommandBarControl newButton = cb.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing, missing);  
 newButton.Caption = "Test";
 newButton.Visible = true;
 newButton.Enabled = true;
你可以用VSTO实现这一点,我不确定它是否与共享插件技术完全相同,但也许它确实有帮助

来自-

不能以编程方式修改小工具栏

在医生的半路上。在小工具栏上搜索

编辑: 您在上图中圈出的弹出窗口不会出现在右键单击上,而是出现在突出显示上。所选文本下方的上下文菜单可以具有自定义功能,但不在小工具栏中。

From-

不能以编程方式修改小工具栏

在医生的半路上。在小工具栏上搜索

编辑:
您在上图中圈出的弹出窗口不会出现在右键单击上,而是出现在突出显示上。所选文本下方的上下文菜单可以具有自定义功能,但不在小工具栏中。

以下是实现此功能的方法

Microsoft.Office.Core.CommandBar cellbar = diff.CommandBars["Text"];
Microsoft.Office.Core.CommandBarButton button = (Microsoft.Office.Core.CommandBarButton)cellbar.FindControl(Microsoft.Office.Core.MsoControlType.msoControlButton, 0, "MYRIGHTCLICKMENU", Missing.Value, Missing.Value);
if (button == null)
{
   // add the button
   button = (Microsoft.Office.Core.CommandBarButton)cellbar.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton, Missing.Value, Missing.Value, cellbar.Controls.Count + 1, true);
   button.Caption = "My Right Click Menu Item";
   button.BeginGroup = true;
   button.Tag = "MYRIGHTCLICKMENU";
   button.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(MyButton_Click);
}

以下是如何做到这一点

Microsoft.Office.Core.CommandBar cellbar = diff.CommandBars["Text"];
Microsoft.Office.Core.CommandBarButton button = (Microsoft.Office.Core.CommandBarButton)cellbar.FindControl(Microsoft.Office.Core.MsoControlType.msoControlButton, 0, "MYRIGHTCLICKMENU", Missing.Value, Missing.Value);
if (button == null)
{
   // add the button
   button = (Microsoft.Office.Core.CommandBarButton)cellbar.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton, Missing.Value, Missing.Value, cellbar.Controls.Count + 1, true);
   button.Caption = "My Right Click Menu Item";
   button.BeginGroup = true;
   button.Tag = "MYRIGHTCLICKMENU";
   button.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(MyButton_Click);
}

我右键点击弹出窗口,并突出显示Word 2007.True。我没有意识到它在右键单击和高亮显示时都会弹出。我在右键单击和高亮显示Word 2007时都会弹出。真的。我没有意识到它会在右键单击和高亮显示时弹出。这也会添加上下文菜单中的按钮,而不是小工具栏。@Marcus是的,但它会添加检查以避免重复,否则会出现多个按钮,每个新实例一个按钮@Brandon是的,但这是您能得到的最接近的按钮。这还添加了上下文菜单中的按钮,而不是小工具栏。@Marcus是的,但它添加了检查以避免重复,否则您会得到多个按钮,每个新实例一个按钮@布兰登:是的,但这是你能得到的最接近的。