2012-04-06 115 views
3

我需要在Visio窗口中使用一組按鈕創建自己的工具欄。下一個代碼生成工具欄(它的工作原理),創建按鈕(它的工作原理),併爲它們分配Click事件處理程序。CommandBarButton單擊幾個按鈕的事件

vsoCommandBar = vsoCommandBars.Add("MyCommandBat", Office.MsoBarPosition.msoBarTop, false, true); 

var vsoButtonX1 = (Office.CommandBarButton)vsoCommandBar.Controls.Add(
    Office.MsoControlType.msoControlButton, 1, 2, 1, false); 
vsoButtonX1.Caption = "Test1"; 
vsoButtonX1.Tag = ""; 
vsoButtonX1.Click += GlobalEvents.btnTestClick; 

var vsoButtonX2 = (Office.CommandBarButton)vsoCommandBar.Controls.Add(
    Office.MsoControlType.msoControlButton, 1, 2, 2, false); 
vsoButtonX2.Caption = "Test2"; 
vsoButtonX2.Tag = ""; 
vsoButtonX2.Click += GlobalEvents.btnTest2Click; 

處理程序很簡單,但不同(當然)。

public void btnTestClick(Office.CommandBarButton vsoButton, ref bool cancelDefault) 
{ 
    MessageBox.Show("btnTestClick!"); 
} 

public void btnTest2Click(Office.CommandBarButton vsoButton, ref bool cancelDefault) 
{ 
    MessageBox.Show("btnTest2Click!"); 
} 

當我點擊任何按鈕時,我會看到「btnTestClick!」對話框。並按下「確定」對話框後用「btnTest2Click!」。在任何一個按鈕上。

此外,如果我跳過這行: 「btnTestClick」

vsoButtonX2.Click += GlobalEvents.btnTest2Click; 

我會看到一個對話框在任何按鈕上。

看起來它至少只有一個點擊處理器的命令欄。這是真的嗎?! PS:當然,我可以使用「vsoButton」參數和標籤來檢測按下的按鈕,但使用不同的事件處理程序似乎更方便......可能嗎?

回答

4

的Visio區分按鍵由他們...標籤...

vsoButtonX1.Tag = "1"; 
vsoButtonX2.Tag = "2"; 

解決這個問題......我離開的問題還活着,也許它會幫助SMB ...