我爲我的公司創建了VSTO,並且遇到了一個有趣的問題,我可以使用一些幫助。我會盡我所能解釋這一點。我現在設置了AddIn,它通過Application.AfterNewPresentation事件啓動後創建2個customTaskPanes。並且能夠根據來自功能區上的togglebutton的用戶輸入來隱藏/顯示這些內容。單獨窗口中的C#VSTO-Powerpoint-TaskPanes。
現在,當我啓動名爲「Presentation1」的第一個PowerPoint 2010時,一切都很好,我可以顯示/隱藏TaskPanes,並且所有內容都以它應該的方式插入。現在我打開第二個名爲「Presentation2」的模板(爲了讓事情保持直線),一切都很好,我可以顯示/隱藏TaskPanes,並且一切都很好。如果我回到「Presentation1」插入和一切正常,但是當我隱藏/顯示TaskPanes時,它隱藏/顯示它們在「Presentation2」上。如果我創建「Presentation3」,則會發生同樣的情況,但「Presentation1」和「Presentation2」控制「Presentation3」TaskPanes。如果關閉「Presentation2」和「Presentation3」,「Presentation1」按鈕根本不顯示/隱藏任何內容。
代碼中的ThisAddIn
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.AfterNewPresentation += new PowerPoint.EApplication_AfterNewPresentationEventHandler(Application_AfterNewPresentation);
}
private void Application_AfterNewPresentation(PowerPoint.Presentation Pres)
{
PowerPoint.Application app = Pres.Application;
PowerPoint.DocumentWindow docWin = null;
foreach (PowerPoint.DocumentWindow win in Globals.ThisAddIn.Application.Windows)
{
if (win.Presentation.Name == app.ActivePresentation.Name)
{
docWin = win;
}
}
this.myWebForm = new SearchWebForm();
this.myWebFormTaskPane = this.CustomTaskPanes.Add(myWebForm, "Search ",docWin);
this.myWebFormTaskPane.DockPosition = Office.MsoCTPDockPosition.msoCTPDockPositionRight;
this.myWebFormTaskPane.Width = 345;
this.myWebFormTaskPane.VisibleChanged += new EventHandler(WebFormTaskPane_VisibleChanged);
}
private void WebFormTaskPane_VisibleChanged(object sender, System.EventArgs e)
{
Globals.Ribbons.Ribbon1.searchButton.Checked = myWebFormTaskPane.Visible;
if (Globals.Ribbons.Ribbon1.searchButton.Checked == true)
{
myWebForm.SearchForm_Navigate();
}
}
然後這是在帶狀
private void searchButton_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisAddIn.WebFormTaskPane.Visible = ((RibbonToggleButton)sender).Checked;
}
感謝是我繼續加油,由於掛了他們的幸福在Powerpoint中沒有檢查員。我會再次嘗試謝謝。 – KJones 2012-03-09 15:25:45
@KJones - 很高興幫助你!請將此標記爲答案,以便它可以幫助未來遇到同樣問題的人。 – SliverNinja 2012-03-09 15:37:00
好吧我在從Outlook到Powerpoint的一些東西翻譯中丟失了。主要在包裝類中,比如添加Close事件。 PPT中的哪一個是PresentationClose,但是如何指定哪個「檢查器」用作PPT事件處理程序將不接受任何參數。與PPR一樣,ManagingRibbon也沒有使用這個功能。 – KJones 2012-03-09 17:26:14