Как отключить встроенную в RibbonButton Excel? - PullRequest
3 голосов
/ 08 марта 2012

Возможно ли установить Excel 2010, встроенный в RibbonButton, в значение enable = false из надстройки VSTO Excel?

Я попробовал следующее:

CommandBarControls controlls=Globals.ThisAddIn.Application.CommandBars.FindControls(MsoControlType.msoControlButton, 7374, null, false);
/// 7374 is the office control id of the control I want to access

foreach (CommandBarControl control in controlls)
{
    control.Enabled = false;
}

Но, похоже, это работает только для контекстного меню, вызываемого правой кнопкой мыши. И не для ленточных кнопок.

Ответы [ 2 ]

4 голосов
/ 09 марта 2012

Вы можете отключить только вкладки, но не элементы управления, если вы не используете startFromScratch Лента UI. См. MSDN для справки .

Также см. Часто задаваемые вопросы по XML ленты , где приведены полезные ресурсы по работе с лентой Excel.

2 голосов
/ 18 марта 2013

Не уверен, поможет ли это вам, но для пользовательской ленты вы реализуете обратный вызов getEnabled с XML-лентой.

В XML:

<button id="btnMyButton" ... getEnabled="OnMyButton_GetEnabled" onAction="..."/>

В коде позади:

public bool OnMyButton_GetEnabled(Office.IRibbonControl rControl)
{
  // return true or false to enable or disable 
}

Вам необходимо вызвать метод IRibbonUI.Invalidate(), если вам нужно принудительно вызвать эти обратные вызовы (например, когда переменные состояния включения / выключения установлены из-за какого-то другого события).

Кстати, интерфейс Ribbon Designer (в VS 2010), по-видимому, не дает возможности реализовать обратный вызов getEnabled.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...