Globals.Ribbons在Outlook addin启动时为空?

时间:2010-08-04 16:04:52

标签: windows ms-office

我正在使用VSTO 2010和.NET 4为Outlook 2010创建插件。我使用XML方法设计我的功能区,因为我需要上下文菜单挂钩。不幸的是,虽然功能区是在激活addin的Startup事件处理程序之前创建的,但我无法使用处理程序中的Globals.Ribbons.MyRibbon访问功能区!我在Ribbon.cs代码中添加了以下内容:

partial class ThisRibbonCollection : Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection
{
  internal MyRibbon MyRibbon
  {
    get { return this.GetRibbon<MyRibbon>(); }
  }
}

但是当我尝试从启动事件处理程序访问它时,似乎RibbonReadOnlyCollection 为空

另一方面,如果我使用设计器,我可以毫无问题地访问该集合。如何将新功能区添加到集合中?我没有看到任何设置方法或任何可调整的功能区集合实例。

2 个答案:

答案 0 :(得分:1)

使用Globals.Ribbons无法访问使用XML创建的色带。请参阅this回答。

答案 1 :(得分:0)

的ThisAddIn

public Ribbon myRibbon;
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
            {
                Ribbon appointmentRibbon = new Ribbon();
                myRibbon = appointmentRibbon;  // save to local variable

                IRibbonExtensibility ribbonExtensibility = appointmentRibbon;
                return ribbonExtensibility;
            }