设置 getScreentip 功能区 xml 属性时 ExcelDNA 不工作

ExcelDNA not working when getScreentip ribbon xml attribute is set

没有放整条丝带xml,这是我的按钮:

<button id="getLatestCEVersion" keytip="N" label="Download Latest" screentip="Download latest version of this CalcEngine" imageMso="MarkForDownload" onAction="RibbonXOnActionWithTag" tag="GetCurrentCalcEngine" size="large" getEnabled="RibbonXGetEnabled" />

一切正常。如果我像这样简单地添加 getScreentip 属性:

<button id="getLatestCEVersion" keytip="N" label="Download Latest" screentip="Download latest version of this CalcEngine" imageMso="MarkForDownload" onAction="RibbonXOnActionWithTag" tag="GetCurrentCalcEngine" size="large" getEnabled="RibbonXGetEnabled" getScreentip="RibbonXGetScreentip" />

从未调用功能区加载事件(通过 <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RibbonXOnLoad"> 设置)并且功能区未设置,因此当我尝试使功能区控件无效时抛出异常。

        public void RibbonXOnLoad( IRibbonUI ribbon )
        {
            this.ribbon = ribbon;
        }

我不认为我的代码对屏幕提示处理程序很重要,因为它甚至没有进入它,但它是:

        public string RibbonXGetScreentip( IRibbonControl control )
        {
            switch ( control.Id )
            {
                case "getLatestCEVersion":
                    return "Download latest version of this CalcEngine";
                case "checkInCalcEngine":
                    return "Check CalcEngine into Management Site";
                case "checkOutCalcEngine":
                    return "Check CalcEngine out from Management Site";

                default: throw new ArgumentOutOfRangeException();
            }
        }

ExcelDna 是否支持 getScreentip?那里的信息不多,但我看到了一些据说正在使用它的样本,所以我认为它一定是。

当您在示例中添加 getScreentip 时,您的功能区定义将变得无效,因为 screentipgetScreentip 属性是互斥的 (根据 Microsoft 的 Ribbon XML 规范),它们不能一起使用。

即要使用 getScreentip,请删除 screentip 属性。