使用 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
问题已解决!
我已经使用 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
问题已解决!