Как сделать захват при загрузке листа с помощью AddIn Express, чтобы показать / скрыть ленту? - PullRequest
0 голосов
/ 08 февраля 2019

Я создал плагин Excel, используя Add-In Express для .NET , но не могу понять, как показывать мою ленту только при наличии определенного набора данных на " Активный"лист.

Если рабочая таблица не содержит определенный набор данных в определенном ряду ячеек, я хочу скрыть свою ленту, поскольку кнопки на ленте не применяются ко всем рабочим листам.Когда пользователь переключается между различными листами, я хотел бы скрыть / показать ленту соответствующим образом.

Я попытался использовать событие AddinInitialize, но это срабатывает только один раз.Я не хочу заставлять пользователя открывать файл Excel напрямую.Они должны иметь возможность открыть Excel, а затем выбрать файл из меню Файл .

Вот что у меня есть, но я не знаю, куда его поместить:

private void OnAddinInitialize(object sender, EventArgs e)
{
    // note: this does not work all the time!
    adxRibbonTab1.Visible = IsRibbonVisible();
}

private bool IsRibbonVisible()
{
    var worksheet = ActiveSheet;
    if (worksheet == null)
        return false;

    // only show ribbon when top row has certain column headings
    var reader = new WorksheetReader(worksheet);
    return reader.HasColumns(TopLeftCell, RequiredColumnNames);
}

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

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 15 февраля 2019

Я нашел ответ.В конструкторе AddinModule есть элемент «События», на который я должен был сослаться, и затем я смог перехватить следующее с помощью своей функции IsRibbonVisible():

  • WorksheetActivated
  • WorksheetDeactivated
  • WorkbookActivated

Проблема решена!

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