2011-02-15 18 views
1

我的要求是,我需要禁用刪除,並在張水平重命名選項而不是在整個應用程序/工作簿級別。我們如何禁用刪除,並在表級別重命名Excel中的上下文菜單中的選項

我在做了下面的Workbook.cs文件

Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Delete"].Enabled = false; 
Globals.ThisWorkbook.Application.CommandBars["Ply"].Controls["&Rename"].Enabled = false; 

的ThisWorkbook_Startup事件,但本規範適用於整個工作簿水平。假設我只想爲Sheet1執行相同的操作,而不是針對其他工作表執行相同操作。

我們該怎麼做?

我使用Excel VSTO 2007和C#是語言

感謝

回答

1

我找到了答案。我們需要調用方法DisableContextMenuItems()工作簿的啓動和SheetActivated事件

當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; 
    } 
} 

感謝

相關問題