【问题标题】:PowerPoint 2010 Custom TaskPane in multple windows多个窗口中的 PowerPoint 2010 自定义任务窗格
【发布时间】:2016-02-18 18:55:53
【问题描述】:

我正在为 Microsoft PowerPoint 2010 开发自定义任务窗格。我需要在多个应用程序窗口/演示文稿之间同步任务窗格。任务窗格使用功能区上的切换按钮显示。

由于 PowerPoint 2010 在不同的文档窗口中显示每个演示文稿(与 2007 不同),我需要为每个窗口分别创建一个任务窗格并同步它们。我已经按照Microsoft tutorial 了解如何为多个应用程序窗口创建任务窗格,并且我正在使用CustomTaskPaneCollection.Add(UserControl, String, Object) 方法来指定任务窗格应与哪个应用程序窗口相关联。在这种情况下,Object 是与任务窗格关联的PowerPoint.DocumentWindow

由于某种原因,我的所有任务窗格都是在活动窗口中创建的,而不是在我分配的窗口中创建的。例如,如果我打开 3 个 PowerPoint 演示文稿,然后切换任务窗格,则所有三个任务窗格都将添加到活动窗口中。

这是我在按下切换按钮时用来添加任务窗格的代码:

public void AddAllTaskPanes()
{
   PowerPoint.DocumentWindows windows = Globals.ThisAddIn.Application.Windows;
   if(windows.Count > 0)
   {
      for (int i=1; i<=windows.Count; i++){
         PowerPoint.DocumentWindow window = windows[i];
         customTaskPane = this.CustomTaskPanes.Add(new UserControl1(), "My User Control", window);
         customTaskPane.Visible = true;
      }
   }
}

似乎这应该成功地将每个任务窗格添加到其指定的window,我无法弄清楚为什么所有任务窗格都与活动窗口相关联。我对这个问题进行了很多研究,但未能找到解决方案。我找到的最接近的是this question,但是答案对应于 PowerPoint 2007,而不是问题参考中的 2010。

如果您能深入了解 PowerPoint 为何会出现这种情况,我们将不胜感激。

【问题讨论】:

    标签: c# .net vsto powerpoint office-addins


    【解决方案1】:

    我从产生相同行为的 PresentationAfterOpen 和 PresentationAfterNew 事件中创建了任务窗格。

    关于 PresentationAfterOpen 事件的说明,如果用户选择的文档已经打开,该事件仍然会被触发,因此您需要在创建新文档之前检查是否已经为该文档创建了 CustomTaskPane。

    解决此问题的一种方法是在您的 CustomPane 中创建一个指向关联 DocumentWindow 的指针,并通过 CustomTaskPaneCollection 检查关联的枚举。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 2014-08-25
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多