ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

多个按钮的CommandBarButton单击事件

2019-11-01 13:07:49  阅读:491  来源: 互联网

标签:visio add-in c vsto


我需要在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";

解决了这个问题…我还活着保留了这个问题,也许对您有所帮助…

标签:visio,add-in,c,vsto
来源: https://codeday.me/bug/20191101/1983953.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有