Отобразить пользовательский элемент управления в активной книге

У меня есть проект надстройки Excel VSTO. У меня есть лента с именем "ManageTaskPaneRibbon", а на ленте у меня есть кнопка с названием "toggleButton1", которая открывает пользовательский элемент управления с именем "TaskPaneControl". Когда я запускаю надстройку и нажимаю на кнопку, пользовательская панель правильно отображается в "Book1".

Book1 открывает панель правильно от кнопки переключения ленты

Но когда я нажимаю на "Новая рабочая книга", лента в новой рабочей книге "Book2" открывается с уже нажатой кнопкой переключения, как в "Book1".

Панель Book1 закрывается, кнопка переключения Book2 снимается, кнопка переключения Book1 остается отмеченной

Когда я нажимаю кнопку переключения в "Book2", панель в "Book1" исчезает, кнопка переключения в "Book2" теперь не проверяется, а кнопка переключения в "Book1" остается отмеченной.

введите описание изображения здесь

Я основал свой тест на этом прохождении...

Пример прохождения Microsoft

В ThisAddIn я удалил экземпляр TaskPaneControl...

private TaskPaneControl taskPaneControl1;
private Microsoft.Office.Tools.CustomTaskPane taskPaneValue;

В ThisAddIn_Startup я добавил TaskPaneControl в поле CustomTaskPanes...

  taskPaneControl1 = new TaskPaneControl();
  taskPaneValue = this.CustomTaskPanes.Add(taskPaneControl1, "MyCustomTaskPane");
  taskPaneValue.VisibleChanged += new EventHandler(taskPaneValue_VisibleChanged);

И в нажатие кнопки переключения я добавил код для отображения панели...

            Globals.ThisAddIn.TaskPane.Visible = ((RibbonToggleButton)sender).Checked;
            Globals.ThisAddIn.TaskPane.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft;
            Globals.ThisAddIn.TaskPane.Width = 250;

Я не уверен, нужно ли мне загружать новый экземпляр ленты при открытии нового файла или мне нужно создать новый экземпляр панели. Конечно, я не уверен, как это сделать. Может ли кто-нибудь помочь мне понять это?

Спасибо т

0 ответов

Если бы ваш источник был https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-add-a-custom-task-pane-to-an-application, тогда:

Имейте в виду, что эквивалент this в C# совпадает с Me в vb.net.

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

Другие вопросы по тегам