2015-06-11 1 views
0

У меня есть класс Ribbon1, который был создан Visual Studio.Как вы получаете доступ к элементам управления ленты (например, RibbonEditBox) из внешнего класса?

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

Я хотел бы получить доступ к одному из элементов управления лентой из другого класса.

using MyRibbon = ExcelAddIn1.Ribbon1; 

xlTextID = MyRibbon.IDBox.Text; 

У меня есть сообщение об ошибке.

Ссылка на объект обязательна для нестатического поля, метод, .

Я не могу сделать IDBox статическим, потому что он инициализируется как экземпляр класса с помощью метода InitializeComponent().

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 не статические и все еще получать доступ к нему из внешнего класса?

Я могу найти ответ - см. Ниже.

+1

возможно дубликат [Ссылка на объект требуется для нестатического поля, метод или свойство «WindowsApplication1.Form1.setTextboxText (целое) ] (http://stackoverflow.com/questions/498400/an-object-reference-is-required-for-the-nonstatic-field-method-or-property-wi) –

+1

В соответствии с многими почти одинаковыми вопросами здесь «Ссылка на объект требуется для нестатического поля, метода, свойства», вы получаете доступ к классу, как если бы это был экземпляр (объект) этого класса. Вместо того, чтобы 'MyRibbon.IDBox.Text', вам нужно создать экземпляр' MyRibbon.IDBox' (или, более того, получить доступ к экземпляру exisiting, созданному методом 'InitializeComponent'. –

+0

Как получить доступ к экземплярам, ​​созданным методом InitializeComponent ? – LLaP

ответ

0

Доступ к экземплярам всех элементов управления лентой, полученных из Microsoft.Office.Tools.Ribbon, можно получить через Globals.Ribbons.Ribbon1.

Таким образом, для доступа к public Microsoft.Office.Tools.Ribbon.RibbonEditBox IDBox;, который создается методом InitializeComponent(), вы бы сделали Globals.Ribbons.Ribbon1.IDBox.

Более подробная информация о доступе к Ribbon Controls в Run-Time:

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