您如何从 class 外部访问功能区控件(例如 RibbonEditBox)?

How do you access Ribbon controls (eg. RibbonEditBox) from outside class?

我有一个由 Visual Studio 创建的 Ribbon1 class。

public Microsoft.Office.Tools.Ribbon.RibbonEditBox IDBox;

我想从另一个 class 访问其中一个功能区控件。

using MyRibbon = ExcelAddIn1.Ribbon1;

xlTextID = MyRibbon.IDBox.Text;

我收到错误消息。

An object reference is required for non-static field, method, property.

我无法将 IDBox 设为静态,因为它是通过 'InitializeComponent()' 方法初始化为 class 的实例。

this.IDBox = this.Factory.CreateRibbonEditBox();

我也试过创建一个属性。

    private Microsoft.Office.Tools.Ribbon.RibbonEditBox IDBox;

    public Microsoft.Office.Tools.Ribbon.RibbonEditBox IDBoxProperty
    {
        get { return IDBox; }
        set { IDBox = value; }
    }

这样做我看到了完全相同的错误。

如何保持 IDBox 非静态并仍然从外部访问它class?

我能找到答案 - 见下文。

可以通过 Globals.Ribbons.Ribbon1.

访问从 Microsoft.Office.Tools.Ribbon 派生的所有功能区控件的实例

因此,为了访问由 InitializeComponent() 方法创建的 public Microsoft.Office.Tools.Ribbon.RibbonEditBox IDBox;,您需要执行 Globals.Ribbons.Ribbon1.IDBox.

有关在 运行 访问功能区控件的更多信息:

https://msdn.microsoft.com/en-us/library/bb772088.aspx