0

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

Book1 从功能区切换按钮正确打开窗格

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

Book1 面板关闭,Book2 切换按钮取消选中,Book1 切换按钮保持选中状态

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

在此处输入图像描述

我的测试基于这个演练......

微软演练示例

在 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;

我不确定在打开新文件时是否需要加载功能区的新实例,或者是否需要创建面板的新实例。当然,我也不知道该怎么做。谁能帮我解决这个问题?

谢谢

4

1 回答 1

0

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

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

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

于 2020-02-18T07:32:35.437 回答