访问自定义任务窗格是活动窗口-Visual Basic,VSTO [英] Accessing custom task pane is active window - Visual Basic, VSTO
问题描述
我正在VSTO中为Ppt 2013创建一个COM加载项,并在引用活动窗口中的自定义任务窗格时遇到了问题。
I'm creating a COM add-in in VSTO for Ppt 2013 and am having a problem referencing the custom task pane in the active window.
我的代码是应该使自定义任务窗格仅对活动窗口可见,但是当前它在所有文档窗口中都可以运行。
My code is supposed to make the custom task pane visible for the active window only, however it currently runs for all document windows.
我的代码是:
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
任务窗格将添加到使用以下代码创建/打开的每个新演示文稿中
The taskpane is added to each new presentation created/ opened using the below code
AddIn_control1 = New AddIn_control
AddIn_taskpane = Me.CustomTaskPanes.add(AddIn_control1, "Add-in taskpane", Me.Application.ActiveWindow)
推荐答案
我进行了一个小实验,结果发现CustomTaskPa ne.Window始终是ActiveWindow。因此,要解决此问题,您可以在某些词典中跟踪大写字母:
I conducted a little experiment and turns out CustomTaskPane.Window is always ActiveWindow. So to workaround it you can keep tracking of tackpanes in some dictionary:
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;
}
这篇关于访问自定义任务窗格是活动窗口-Visual Basic,VSTO的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!