Отобразить пользовательский элемент управления в активной книге - PullRequest
0 голосов
/ 23 мая 2019

У меня есть проект надстройки 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;

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

Спасибо T

...