ContextMenu Excel 365 действие теряется через некоторое время c#


Я создал contextMenu (CommandBarButton) в ленте Excel addin, написанной на C# некоторое время назад. Я замечаю, что по какой-то причине через некоторое время работы в excel функциональность за кнопкой теряется. Сразу после инициализации аддина, где кнопки добавляются в контекстное меню, он работает как шарм, но затем, будучи занятым в листе Excel, функция, стоящая за событием, больше не вызывается, когда я нажимаю на него.

Я перепробовал много разных вещей, таких как удаление и добавление событий после каждого действия в моем аддине, но проблема сохраняется.

EDIT: я обнаружил, что кнопка на моей ленте, которая копирует рабочий лист, ответственна (по крайней мере, в одном из случаев) за то, что обработчик событий не работает. Я использую Excel.Worksheet.Copy() для копирования моего рабочего листа, а также активирую фильтр, который выводит обработчик событий в нерабочее состояние.

Может быть, по какой-то причине слушатель событий удаляется каким-то процессом?

        Microsoft.Office.Core.CommandBarButton ContextMenuCompanyButton;
        ContextMenuCompanyButton = (Microsoft.Office.Core.CommandBarButton)Globals.ThisAddIn.Application.CommandBars["Cell"].Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton, Type.Missing, Type.Missing, 1, false);
        ContextMenuCompanyButton.Style = Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption;
        ContextMenuCompanyButton.Caption = "Companies";
        ContextMenuCompanyButton.Tag = "Companies";
        ContextMenuCompanyButton.Visible = true;
        ContextMenuCompanyButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(CommandBarCompanyButton_Click);

Знает ли кто-нибудь эту проблему, я знаю не знаю, где его искать. Может быть, есть какой-то внутренний процесс прояснения этих событий?

1 3

1 ответ:

Я наконец-то починил его!

Первая строка кода, который я опубликовал в своем вопросе:

Microsoft.Office.Core.CommandBarButton ContextMenuCompanyButton;

Я переместился в качестве переменной класса в заголовок класса.