我需要在Visio窗口中使用一组按钮来创建自己的工具栏.下一个代码生成工具栏(起作用),创建按钮(起作用)并为其分配Click事件处理程序.
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!”.在两个按钮中的任何一个上.
此外,如果我跳过这一行:
vsoButtonX2.Click += GlobalEvents.btnTest2Click;
我将看到一个对话框“ btnTestClick!”.在任何按钮上.
看来至少只有一个命令栏才有一个单击处理器.是真的吗?
PS:当然,我可以使用“ vsoButton”参数和标签来检测按钮是否被按下,但是使用不同的事件处理程序似乎更方便…这可能吗?
解决方法:
Visio通过其按钮来区分按钮.
vsoButtonX1.Tag = "1";
vsoButtonX2.Tag = "2";
解决了这个问题…我还活着保留了这个问题,也许对您有所帮助…