如何拦截单击内置的Office功能区控件

Has*_*ude 3 c# excel add-in excel-addins

我想知道是否有可能检测到用户何时单击了Excel中的页眉/页脚按钮,这样我就可以在我的加载项选项卡上显示一些自定义页眉/页脚相关的功能区控件,并在用户不在页眉中时隐藏它们/页脚编辑模式.

是否有可能以某种方式劫持此按钮?我见过应用程序劫持了Excel Save.我正在寻找与页眉/页脚按钮类似的行为.

我正在使用C#,Visual Studio 2012和Excel 2010.我使用Ribbon XML方法创建了自定义功能区.

Has*_*ude 5

我发现的一种方法是使用<commands>Ribbon XML中的部分(我不知道它存在.)显然,这种机制允许您重新使用Excel固有的操作,但要注意并非所有控件都支持重新使用onAction回调)

<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <commands>
        <command idMso="HeaderFooterInsert" onAction="testHeaderFooter"/>
    </commands>
  <ribbon>
    <tabs>...
Run Code Online (Sandbox Code Playgroud)

以及相关的事件处理程序:

    public void testHeaderFooter(Office.IRibbonControl control, bool cancelDefault)
    {
        MessageBox.Show("Testing.");
        cancelDefault = false;
    }
Run Code Online (Sandbox Code Playgroud)

这个链接非常有用:

http://social.msdn.microsoft.com/Forums/office/en-US/e1a60d16-053e-4697-b17c-b22d602f0400/intercept-the-onaction-event-of-a-gallery-element-of-excel- 2007-UI-带β=论坛VSTO