2015-08-15 2 views
0

Я пишу свой первый VSTO AddIn для Word, мне удалось добавить кнопку в контекстное меню «Track Changes», но я не могу заставить его вызвать обработчик кликов. Я вижу кнопку там, но нажимаю на нее ничего не делает - я никогда не попадаю в ButtonClick и нет никаких исключений. Я пробовал установить Enabled в true, Visible в true, но безрезультатно.Word VSTO addin - событие Click не срабатывает?

public partial class ThisAddIn 
    { 
     Word.Application application; 
     string insertText = "INSERT!!"; 
     Office.CommandBarButton acceptButton; 
     Office.CommandBar commandBar; 

     private void ThisAddIn_Startup(object sender, System.EventArgs e) 
     { 
     application = this.Application; 
     application.WindowBeforeRightClick += 
      new Word.ApplicationEvents4_WindowBeforeRightClickEventHandler(application_WindowBeforeRightClick);   

     application.DocumentOpen += 
      new Word.ApplicationEvents4_DocumentOpenEventHandler(WorkWithDocument); 

     ((Word.ApplicationEvents4_Event)this.Application).NewDocument += 
      new Word.ApplicationEvents4_NewDocumentEventHandler(WorkWithDocument); 

     } 

     private void WorkWithDocument(Microsoft.Office.Interop.Word.Document Doc) 
     { 
     try 
     { 
      application.CustomizationContext = application.ActiveDocument; 
      commandBar = application.CommandBars["Track Changes"]; 
      acceptButton = (Office.CommandBarButton)commandBar.Controls.Add(
       Office.MsoControlType.msoControlButton); 
      acceptButton.accName = insertText; 
      acceptButton.Caption = insertText;    
      acceptButton.Click += new Office._CommandBarButtonEvents_ClickEventHandler(ButtonClick); 
     } 
     catch (Exception ex) 
     { 
      Debug.Print(ex.StackTrace); 

      // Handle exception if for some reason the document is not available. 
     } 
     } 

     // Handles the event when a button on the new toolbar is clicked. 
     private void ButtonClick(Office.CommandBarButton ctrl, ref bool cancel) 
     { 
     try 
     { 
      Debug.Print("You clicked: " + ctrl.Caption); 
     } 
     catch (Exception ex) 
     { 
      Debug.Print(ex.Message); 
     } 
     } 

... 

ответ

1

Командные бары были устаревшими. Начиная с Word 2007 вместо этого используется интерфейс Ribbon UI (aka Fluent UI). Подробнее о Fluent UI в следующих статьях:

+0

Спасибо за головы. Проклятые устаревшие уроки. – gremwell

Смежные вопросы