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