Excel 加载项功能区单击事件冒泡
Excel add-in ribbon click events bubbling
我正在 MSDN 上关注此演练:Creating a Custom Tab by Using the Ribbon Designer
查看第 3 步和第 4 步:
在第 3 步中,它向 ribbon_Load
函数添加了一个事件处理程序,基本上是向功能区中的按钮添加了一个点击事件:
private void MyRibbon_Load(object sender, RibbonUIEventArgs e)
{
this.button1.Click += new RibbonControlEventHandler(this.button1_Click);
}
然后,在第 4 步中,他们以我更习惯的方式添加另一个事件处理程序,如下所示:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
MergeReportInterface ui = new MergeReportInterface();
ui.ShowDialog();
}
我不太明白这样做的目的,因为它所做的只是导致事件触发两次。如果我注释掉添加到 load
函数的事件处理程序,事件将发生一次。
有人可以向我解释一下这是什么意思吗? 如果有的话,或者 MSDN 站点上是否有错误。 处理功能区单击事件的正确方法应该是什么?
private void button1_Click(object sender, RibbonControlEventArgs e)
{
MergeReportInterface ui = new MergeReportInterface();
ui.ShowDialog();
}
这是不是添加事件处理程序。这是您的事件将调用的方法。
this.button1.Click += new RibbonControlEventHandler(this.button1_Click);
这是说'When button1 fires its Click
event, call this.button1_Click
'。
您的代码只设置了一个事件处理程序,它应该只触发一次。
但是,您可能通过双击表单设计器上的按钮创建了 button1_Click
方法。这在幕后添加了一个额外的事件处理程序。这就是您两次触发事件的原因。
所以你有两个选择:
返回 IDE 并通过表单设计器删除点击处理程序。转到您的代码并手动编写方法 button1_Click
.
或
删除此行:this.button1.Click += new RibbonControlEventHandler(this.button1_Click);
,因为 VisualStudio 会自动为您执行此操作。
我正在 MSDN 上关注此演练:Creating a Custom Tab by Using the Ribbon Designer
查看第 3 步和第 4 步:
在第 3 步中,它向 ribbon_Load
函数添加了一个事件处理程序,基本上是向功能区中的按钮添加了一个点击事件:
private void MyRibbon_Load(object sender, RibbonUIEventArgs e)
{
this.button1.Click += new RibbonControlEventHandler(this.button1_Click);
}
然后,在第 4 步中,他们以我更习惯的方式添加另一个事件处理程序,如下所示:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
MergeReportInterface ui = new MergeReportInterface();
ui.ShowDialog();
}
我不太明白这样做的目的,因为它所做的只是导致事件触发两次。如果我注释掉添加到 load
函数的事件处理程序,事件将发生一次。
有人可以向我解释一下这是什么意思吗? 如果有的话,或者 MSDN 站点上是否有错误。 处理功能区单击事件的正确方法应该是什么?
private void button1_Click(object sender, RibbonControlEventArgs e)
{
MergeReportInterface ui = new MergeReportInterface();
ui.ShowDialog();
}
这是不是添加事件处理程序。这是您的事件将调用的方法。
this.button1.Click += new RibbonControlEventHandler(this.button1_Click);
这是说'When button1 fires its Click
event, call this.button1_Click
'。
您的代码只设置了一个事件处理程序,它应该只触发一次。
但是,您可能通过双击表单设计器上的按钮创建了 button1_Click
方法。这在幕后添加了一个额外的事件处理程序。这就是您两次触发事件的原因。
所以你有两个选择:
返回 IDE 并通过表单设计器删除点击处理程序。转到您的代码并手动编写方法 button1_Click
.
或
删除此行:this.button1.Click += new RibbonControlEventHandler(this.button1_Click);
,因为 VisualStudio 会自动为您执行此操作。