5

我正在尝试将项目添加到拆分按钮和画廊。问题出在工厂。在下面的 OfficeRibbon 代码文件中,Factory 是未知的。在插件代码文件中也是未知的。我在某处缺少参考。我也试过 Globals.Factory 仍然未知。

RibbonButton rc = this.Factory.CreateRibbonButton(); 

我有以下 using 语句。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Tools.Ribbon;
//using Microsoft.Office.Tools.Excel.Extensions;

此代码在我的项目中已重命名为 ReqCommon.cs 的 ThisAddin.cs 中也失败了。

我想要的最终目标是动态地将项目添加到这两个控件。我在这里和其他地方找到的例子似乎都基于这个难以捉摸的工厂。

该项目确实引用了 Microsoft.Office.Tools.Common.v9.0.dll

4

1 回答 1

5

如果您使用的是功能区设计器- 它会自动为您创建此工厂( ) - 否则您需要通过覆盖(您的 ReqCommon.cs )Globals.Factory.GetRibbonFactory()创建自己的工厂CreateRibbonExtensibilityObject()ThisAddin.cs

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{  
    Ribbon1 tempRibbon = new Ribbon1();
    tempRibbon.tab1.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
    tempRibbon.tab1.ControlId.OfficeId = "TabHome";
    return Globals.Factory.GetRibbonFactory().CreateRibbonManager(new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { tempRibbon });   
}

功能区设计器继承自Ribbon.RibbonBase其中包含RibbonBase.Factory可以在其中this.Factory使用的属性。

于 2012-08-17T13:03:57.420 回答