我的要求是,我需要在工作表级别禁用“删除并重命名”选项,而不是在整个应用程序/工作簿级别。
我在Workbook.cs 文件的 ThisWorkbook_Startup事件中完成了以下操作
Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Delete"].Enabled = false;
Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Rename"].Enabled = false;
但是此代码适用于整个工作簿级别。假设我想仅对Sheet1执行相同操作,而不是对其他工作表执行相同操作。
我们怎么做?
我使用的是Excel VSTO 2007,C#是语言
由于
答案 0 :(得分:1)
我找到了答案。我们需要从 Workbook的Startup和SheetActivated Event 中调用 DisableContextMenuItems()方法。
将在加载Addin时第一次调用启动事件。对于每个工作表更改或激活,SheetActivate事件都将被触发。
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
DisableContextMenuItems();
}
void ThisWorkbook_SheetActivate(object Sh)
{
DisableContextMenuItems();
}
private static void DisableContextMenuItems()
{
var sheet = Globals.ThisWorkbook.ActiveSheet as ExcelXP.Worksheet;
var name = sheet.Name;
if (name != "Sheet1")
{
Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Delete"].Enabled = true;
Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Rename"].Enabled = true;
}
else
{
Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Delete"].Enabled = false;
Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Rename"].Enabled = false;
}
}
由于