【问题标题】:Where does Factory come from?工厂从何而来?
【发布时间】:2012-08-16 23:41:58
【问题描述】:

我正在尝试将项目添加到拆分按钮和画廊。问题出在工厂。在下面的 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

【问题讨论】:

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


【解决方案1】:

如果您使用Ribbon Designer - 它会自动为您创建这个Factory (Globals.Factory.GetRibbonFactory()) - 否则您需要通过@创建自己的Factory ThisAddin.cs 中的 987654322@(你的 ReqCommon.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 可以在其中使用。

【讨论】:

  • 如果我破坏了项目,我在 VS2010 中创建了一个新的 Excel 插件,添加了一个功能区(不是 XML)。然后尝试了您的代码:Factory 和 IRibbonExtension 无法解析。我已按照您提供的链接进行操作,看起来应该可以使用。我不知道为什么这是不同的。如果这有任何问题,我有 VS2010 终极版,Office 2010 64 位,在 Win7 Pro 上。
  • 对于IRibbonExtension,您必须缺少对Office.dll - C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12\Office.dll 的引用。对于Factory,您必须缺少来自C:\Program Files\Reference Assemblies\Microsoft\VSTO40\v4.0.Framework\Microsoft.Office.Tools.Excel.dll 的对Microsoft.Office.Tools.Excel.dll 的引用
  • 不适用于 .NET 3.5 工厂在 3.5 版本中不存在。我能够让它与@SilverNinja 的方法一起使用。为此,我创建了一个新的 .NET 4.0 Office Addin。这是关键。
  • 很棒的收获,感谢您的回复! Factory 似乎是在 VSTO 4 代码库中添加的,而在 VSTO 3 中不存在。作为证据...RibbonBase's 其他版本不要回到过去 VS 2010
  • 附加信息:视觉功能区设计器似乎不兼容。 :( 简单地将目标 .NET 版本从 3.5 切换到 4.0 不会产生积极的结果。IMO 最好的行动方案是:从 Visual Studio 模板重新创建一个新的 4.0 插件并推进您的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多