急!!!使用.net开发word2003外接程序,自定义菜单按钮事件怎么只响应一次

时间:2021-07-19 03:25:41
场景:1、word中添加自定义菜单"导入",菜单项"单条导入","批量导入".
  2、菜单项"单条导入","批量导入".默认为置灰不可以用,但选择了文本内容后,恢复可以用
  3、点击“单条导入”,打开自己开发的winform窗口,进行操作

问题:1、点击“单条导入”或"批量导入"打开winform窗口并关闭窗口后,再点击菜单项,菜单按钮事件不响应。
  自己建了个空窗口,试了一下,打开并关闭窗口10次左右,菜单按钮事件不再响应。
  2、如果实现上面的置灰不可以用和恢复可用功能

代码:
  public void OnStartupComplete(ref System.Array custom)
  {
  object missing = System.Reflection.Missing.Value;
  Microsoft.Office.Core.CommandBar menuBar = null;
  // 一级菜单
  menuBar = ((Microsoft.Office.Interop.Word.Application)this.applicationObject).CommandBars["Menu Bar"];
  CommandBarButton ccbtn = null;
  Microsoft.Office.Core.CommandBarPopup popuBar =
  (Microsoft.Office.Core.CommandBarPopup)menuBar.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlPopup,
  missing, missing, missing, true);
  popuBar.Caption = "导入";
  // 二级菜单
  CommandBarButton btnRequirementProperty = (CommandBarButton)popuBar.Controls.Add(
  Microsoft.Office.Core.MsoControlType.msoControlButton, 1, "", 1, true);
  btnRequirementProperty.Caption = "单条导入";
  btnRequirementProperty.Style = MsoButtonStyle.msoButtonCaption;
  btnRequirementProperty.Click +=
  new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);

  CommandBarButton btnCancelImport = (CommandBarButton)popuBar.Controls.Add(
  Microsoft.Office.Core.MsoControlType.msoControlButton, 1, "", 1, true);
  btnCancelImport.Caption = "批量导入";
  btnCancelImport.Style = MsoButtonStyle.msoButtonCaption;
  btnCancelImport.Click +=
  new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);

  }
  // 菜单自定义事件方法
  private void MyButton_Click(CommandBarButton cmdBarbutton, ref bool cancel)
  {
  switch (cmdBarbutton.Caption)
  {
  case "单条导入":
  Form1 frmLogin = new Form1();
  frmLogin.Show();
  //frmLogin.doc = this.applicationObject;
  // System.Windows.Forms.MessageBox.Show(strName);
  break;

  case "批量导入":
  Form1 frmLogin1 = new Form1();
  frmLogin1.Show();
  break;
  default:
  break;
  }
  }

  拜托各位兄弟姐妹指点小弟了!!!

7 个解决方案

#1


自己顶一下

#2


自己UP

#3


LZ.结贴拿分

#4


终于有人回复:)
to:zhang523012313
指导一下小弟,怎么解决这两个问题 多谢

#5


有没有人在?

#6


该回复于2010-12-21 09:15:36被版主删除

#7


我一般都是设置一个布尔变量,相当于一个开关,初始状态:第一个开关开,其他关。当第一步操作完成后,设置第一个菜单的开关为false,设置其他开关为开。Menu.setEnabled(true);

#1


自己顶一下

#2


自己UP

#3


LZ.结贴拿分

#4


终于有人回复:)
to:zhang523012313
指导一下小弟,怎么解决这两个问题 多谢

#5


有没有人在?

#6


该回复于2010-12-21 09:15:36被版主删除

#7


我一般都是设置一个布尔变量,相当于一个开关,初始状态:第一个开关开,其他关。当第一步操作完成后,设置第一个菜单的开关为false,设置其他开关为开。Menu.setEnabled(true);