工厂从哪里来?

时间:2012-08-16 23:41:59

标签: visual-studio-2010 vsto asp.net-3.5 excel-2010

我正在尝试将项目添加到分割按钮和图库中。问题在于工厂。在以下OfficeRibbon代码文件中,Factory未知。它在addin代码文件中也是未知的。我错过了某处的参考资料。我也尝试过Globals.Factory还不得而知。

RibbonButton rc = this.Factory.CreateRibbonButton(); 

我有以下使用陈述。

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;

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

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

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

1 个答案:

答案 0 :(得分:5)

如果您使用Ribbon Designer - 它会自动为您创建工厂Globals.Factory.GetRibbonFactory()) - 否则您需要创建自己的工厂ThisAddin.cs(您的ReqCommon.cs )<{3}}中强>>

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 });   
}

功能区设计器继承自overriding CreateRibbonExtensibilityObject(),其中包含Ribbon.RibbonBase属性,可在其中使用this.Factory