C #, надстройка Word 2003 и событие кнопки панели инструментов

Я пытаюсь написать надстройку уровня приложения для Word 2003. Плагин добавляет кнопку на новую панель команд - нажатие кнопки сохраняет активный документ, а затем выполняет некоторые дополнительные действия. Когда я запускаю Word 2003 и нажимаю кнопку на панели команд, все работает нормально. Однако, если я запускаю Word 2003, открываю новое окно Word, нажимая на панели инструментов кнопку «Новый документ» на «Стандартной» панели инструментов, а затем нажимая кнопку моей командной панели, оказывается, что никаких действий не выполняется. Кажется, что моя кнопка на панели инструментов в новом открытом окне не имеет назначенного обработчика событий «onclick». У вас есть идеи, как решить эту проблему?
Мой код надстройки основан на приведенном ниже коде:

private Office.CommandBar commandBar;
private Office.CommandBarButton docSaveButton;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
  // prepare toolbar:
  try
  {
    commandBar = Application.CommandBars["MY_TOOLBAR"];
  }
  catch (ArgumentException)
  {
    //...
  }

  if (commandBar == null)
  {
    commandBar = Application.CommandBars.Add("MY_TOOLBAR", 1, missing, true);
  }
  commandBar.Visible = true;

  // addbutton: 
  docSaveButton = (Office.CommandBarButton)commandBar.Controls.Add(1, missing, missing, missing, missing);
  docSaveButton.Style = Microsoft.Office.Core.MsoButtonStyle.msoButtonIcon;
  docSaveButton.Caption = "My save";
  docSaveButton.Click += new Office._CommandBarButtonEvents_ClickEventHandler(docSaveButtonClick);
}

private void docSaveButtonClick(Office.CommandBarButton ctrl, ref bool cancel)
{
  MessageBox.Show("Hello !", "Hello !", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

С уважением, JanK


person Community    schedule 21.01.2010    source источник


Ответы (3)


Я подозреваю, что ваша «надстройка» не загружена, но ваша панель инструментов сохраняется. Вы поместили свою «надстройку» в одно из мест автозагрузки Word?

Часто задаваемые вопросы о расположении шаблонов в Word 2003 или Word 2007, Q3: Где сохраняются мои файлы надстройки Word ?, http://support.microsoft.com/kb/826867.

Загрузка надстройки Word, второй пункт, http://msdn.microsoft.com/en-us/library/aa165426(office.10).aspx

• Автоматически при запуске Word путем сохранения файла шаблона в папке автозагрузки Word на вашем компьютере. Путь по умолчанию к этой папке - C: \ Windows \ Application Data \ Microsoft \ Word \ Startup; если вы используете профили пользователей, путь по умолчанию - C: \ Windows \ Profiles \ UserName \ Application Data \ Microsoft \ Word \ Startup. Вы можете изменить этот путь в диалоговом окне "Параметры".

person AMissico    schedule 05.03.2010

Я не делал этого в Word, но я считаю, что в Outlook я заставил его работать, прослушивая события NewWindow (называемые проводниками и инспекторами в Outlook) и повторно добавляя кнопку при создании нового окна (и используя "true" в качестве последнего параметра в commandBar.Controls.Add, чтобы сделать кнопку «временной», чтобы у вас не было двух из них).

P.S. Я согласен, что это должно работать так, как вы ожидаете, и я не уверен, зачем это нужно (или как это должно когда-либо работать, если "temp" имеет значение "false").

person Andy Jacobs    schedule 21.01.2010
comment
Это взлом. Тебе не нужно этого делать. Каждое офисное приложение по-разному обрабатывает существующие панели команд. - person AMissico; 05.03.2010

Я столкнулся с той же проблемой и решил ее, установив свойство Tag на кнопках. Кажется, это сделано намеренно.

http://support.microsoft.com/kb/826931

person Mark Hosang    schedule 19.03.2013