Как мы можем отключить удаление и переименование опции контекстного меню Excel на уровне листа - PullRequest
1 голос
/ 15 февраля 2011

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

Я сделал следующее в ThisWorkbook_Startup событии файла Workbook.cs

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

Но этот код применим на общем уровне рабочей книги. Скажем, я хочу сделать то же самое только для Листа 1, а не для других листов.

Как мы можем это сделать?

Я использую Excel VSTO 2007, и C # является языком

Спасибо

1 Ответ

1 голос
/ 16 февраля 2011

Я нашел ответ. Нам нужно вызвать метод DisableContextMenuItems () из Запуск книги и событие SheetActivation .

Событие запуска будет вызвано в самый первый раз, когда надстройка будет загружена. И при каждом изменении или активации листа будет вызываться событие 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;
    }
}

Спасибо

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