2012-04-06 122 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 ...