多个按钮的CommandBarButton单击事件

本文关键字:单击 事件 CommandBarButton 按钮 | 更新日期: 2023-09-27 18:30:10

我需要在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!"的对话框,并在按下"OK"对话框后看到带有"btnTest2Click!"的对话。在两个按钮中的任意一个上。

此外,如果我跳过这一行:

vsoButtonX2.Click += GlobalEvents.btnTest2Click;

我会在任何按钮上看到单个对话框"btnTestClick!"。

它似乎只有一个点击处理器,至少用于命令栏。这是真的吗?!

PS:当然,我可以使用"vsoButton"参数和标记来检测按钮被按下的原因,但使用不同的事件处理程序似乎更方便。。。有可能吗?

多个按钮的CommandBarButton单击事件

Visio通过按钮的。。。标记。。。

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

解决了问题。。。我把这个问题留了下来,也许这对smb有帮助。。。