我正在尝试向Word的CommandBar
之一添加自定义按钮,然后将其更改为可见或不可见。正如我在some tutorials中所述,我确保将按钮存储在类变量中,这样我的项目就不会在垃圾回收时解除分配。我知道以后访问该项目的正确方法,如上面的教程中所述,但我在右键单击处理程序中尝试下面的方式有什么问题:
public partial class ThisAddIn
{
private Office.CommandBar textContextMenu;
private Office.CommandBarButton exampleMenuItem;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// keep track of the menu for later
textContextMenu = this.Application.CommandBars["Text"];
// add a right click handler
this.Application.WindowBeforeRightClick += new Word.ApplicationEvents4_WindowBeforeRightClickEventHandler(application_WindowBeforeRightClick);
AddToToolbar();
}
private void AddToToolbar()
{
// Add a button to the command bar
exampleMenuItem = (Office.CommandBarButton)textContextMenu.Controls.Add(
Office.MsoControlType.msoControlButton,
missing,
missing,
1,
true);
exampleMenuItem.Caption = "Test Button";
exampleMenuItem.Tag = "testButton";
}
public void application_WindowBeforeRightClick(Word.Selection selection, ref bool Cancel)
{
// attempting to access the variable here throws the COM exception
exampleMenuItem.Visible = false;
// ... but, as in the tutorial, I can access the button like this:
var exampleButton = (Office.CommandBarButton)textContextMenu.FindControl(
buttonType,
missing,
"testButton");
exampleButton.Visible = false;
}
}
我已经查找了VBA异常0x800A01A8 - 据我所知,我并没有尝试访问不存在的COM对象,但我错过了什么?为什么在以这种方式添加按钮后无法从变量中访问该按钮?
感谢您的反馈。
答案 0 :(得分:0)
不推荐使用命令栏,您需要使用Fluent UI控件。您在PC上安装了哪个Word版本?
有关详细信息,请参阅Customizing Context Menus in Office 2010。