在活动工作簿中显示用户控件

时间:2019-05-23 18:56:51

标签: c# visual-studio-2017 user-controls ribbon excel-2019

我有一个VSTO Excel加载项项目。我有一个名为“ ManageTaskPaneRibbon”的功能区,在功能区上,有一个名为“ toggleButton1”的切换按钮,它会打开一个名为“ TaskPaneControl”的用户控件。当我运行插件并单击按钮时,自定义窗格会正确显示在“ Book1”中。

Book1 opens pane correctly from ribbon toggle button

但是,当我单击“新建工作簿”时,新工作簿“ Book2”中的功能区会打开,并且已经单击了切换按钮,就像在“ Book1”中一样。

Book1 panel closes, Book2 toggle button unchecks, Book1 toggle button remains checked

当我单击“ Book2”中的切换按钮时,“ Book1”中的窗格消失了,“ Book2”中的切换按钮现在未选中,但“ Book1”中的切换按钮仍处于选中状态。

enter image description here

我的测试基于此演练...

Microsoft walkthrough example

在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

1 个答案:

答案 0 :(得分:0)

如果您的来源是https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-add-a-custom-task-pane-to-an-application,则:

请记住,C#中的“ this”与vb.net中的“ Me”相同。

这可能导致您除了第一个实例之外没有其他互操作被激活。