使用 AddIn Express 将工作表加载到 show/hide 功能区时如何捕获?

How do capture when a worksheet is loaded using AddIn Express to show/hide a ribbon?

我已经使用 Add-In Express for .NET 创建了一个 excel 插件,但似乎无法弄清楚如何仅在“[=”上有一组特定数据时才显示我的功能区28=]活动”sheet。

如果作品sheet 在某行单元格中包含某组数据,我想隐藏我的功能区,因为功能区上的按钮不适用于所有作品sheet。当用户在不同的工作sheet之间切换时,我想hide/show适当的功能区。

我尝试使用 AddinInitialize 事件,但这只会触发一次。我不想强制用户直接打开 Excel 文件。他们应该能够打开 Excel,然后从 文件 菜单 select 文件。

这是我目前拥有的,但我不知道放在哪里:

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 实例并覆盖一些事件,但到目前为止我运气不佳。我也无法在他们的网站上找到此类工作流程的任何内容。

如有任何帮助,我将不胜感激!

我找到了答案。在 AddinModule 设计器上,有一个我必须引用的 "Events" 项,然后我能够使用我的 IsRibbonVisible() 函数捕获以下内容:

  • WorksheetActivated
  • WorksheetDeactivated
  • WorkbookActivated

问题已解决!