访问自定义任务窗格是活动窗口 - Visual Basic,VSTO

时间:2016-01-08 12:43:04

标签: vb.net vsto powerpoint

我在PST 2013的VSTO中创建了一个COM加载项,并且在活动窗口中引用自定义任务窗格时出现问题。

我的代码应该只为活动窗口显示自定义任务窗格,但它当前针对所有文档窗口运行。

我的代码是:

firstname.lastname@specific.site
washington.guedes@specific.site

使用以下代码

将任务窗格添加到创建/打开的每个新演示文稿中
For Each CTP As Microsoft.Office.Tools.CustomTaskPane In Globals.ThisAddIn.CustomTaskPanes

        If CTP.Window Is Globals.ThisAddIn.Application.ActiveWindow Then
            CTP.Visible = True
        End If

    Next

1 个答案:

答案 0 :(得分:5)

我进行了一个小实验,结果是CustomTaskPane.Window总是ActiveWindow。因此,为了解决这个问题,您可以在某些词典中继续跟踪变形金刚:

Dictionary<CustomTaskPane, PowerPoint.Presentation> ctpDict = new Dictionary<CustomTaskPane, PowerPoint.Presentation>();
void Application_AfterNewPresentation(PowerPoint.Presentation Pres) {
    AddIn_control AddIn_control1 = new AddIn_control();
    CustomTaskPane AddIn_taskpane = this.CustomTaskPanes.Add(AddIn_control1, "Add-In Taskpane", this.Application.ActiveWindow);
    ctpDict.Add(AddIn_taskpane, Pres);
}

以后你可以使用它:

if (cptDict[CTP] == Globals.ThisAddIn.Application.ActivePresentation) {
    CTP.Visible = true;
}