通过这些天使用我们可以得到当前操作的文档对象(我还以自己测试的word文档为例),但是要明确一点,添加菜单不仅仅是针对当前word文档,而是当前机器上的word程序,你可以通过当前文档添加,但添加之后就会一直保存,你随便打开一个本地word文档,菜单都会出现,因此我们在关闭应用程序的时候(或退出的时候)要delete。
//主菜单属于CommandBarPopup类型
//子菜单属于Microsoft.Office.Core.CommandBarButton
Microsoft.Office.Core.CommandBarPopup myMenu;
Object missing = System.Type.Missing;
Microsoft.Office.Core.CommandBarButton myChileMenu;
Word.ApplicationClass myWord = new Word.ApplicationClass();
Microsoft.Office.Core.CommandBar MainMenuBar = myWord.CommandBars.ActiveMenuBar;
Object temp = true;
//添加主菜单
myMenu= (Microsoft.Office.Core.CommandBarPopup)MainMenuBar.Controls.Add(
Microsoft.Office.Core.MsoControlType.msoControlPopup, missing, missing, missing, temp);
myMenu.Caption = "Test(&B)";
myMenu.Visible = true;
myMenu.Tag = Object;
//给主菜单添加子菜单
myChileMenu= (Microsoft.Office.Core.CommandBarButton) myMenu.Controls.Add (Microsoft.Office.Core.MsoControlType.msoControlButton, missing,missing, missing, true);
myChileMenu.Caption = "MessageBox";
myChileMenu.Visible = true;
myChileMenu.Tag = "Test";
//给子菜单添加事件
myChileMenu.Click +=new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(myChileMenu_Click);
//子菜单的事件处理程序
private void myChileMenu_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)
{
try
{
MessageBox.Show("菜单事件完成了!");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在退出应用程序的时候,需要调用自定义菜单的delete(),一般先从子菜单删除,逐级到最高级主菜单,调用删除方法:myChileMenu.delete(true&false);myMenu.delete(false);
(参数是什么含义还没有弄清,我试了,好像没有区别,还请高人指点)