[英]How to read presentationML and place the output on Active slide of powerpoint using c# VSTO
[英]C# PowerPoint VSTO: Check if Any Slide is in View
PowerPoint的互操作庫公開Globals.ThisAddIn.Application.ActiveWindow.View.Slide
,可讓您測試當前是否在視圖中選擇了幻燈片(任何幻燈片或母版)。
如果視圖中當前沒有幻燈片,則View
屬性為null
。 但是,這有一個轉折點:您無法在沒有引發異常的情況下檢查ActiveWindow.View
是否為null。
您如何檢查當前是否選擇了幻燈片/母版,而不采用如下所示的難看的try / catch?
internal static bool SlideActive => Slide != null;
internal static dynamic Slide
{
get
{
try
{
return Globals.ThisAddIn.Application.ActiveWindow.View.Slide;
}
catch
{
return null;
}
}
}
如果沒有人訪問Slide
這是拋出異常:
{System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. --->
System.Runtime.InteropServices.COMException: View.Slide : Invalid request. No slide is currently in view.
我找到了解決此問題的解決方案,其中涉及檢查ActiveWindow
的Pane
的Active
屬性。
返回活動Slide
/ Master
或null
可能如下所示-無需try
/ catch
:
internal static dynamic CurrentSlide
{
get
{
if (Globals.ThisAddIn.Application.Active == MsoTriState.msoTrue &&
Globals.ThisAddIn.Application.ActiveWindow.Panes[2].Active == MsoTriState.msoTrue)
{
return Globals.ThisAddIn.Application.ActiveWindow.View.Slide;
}
return null;
}
}
首先,我們需要檢查應用程序是否處於活動狀態,然后檢查縮略圖窗格的相應Pane
是否處於活動狀態(以考慮取消選擇所有幻燈片/母版的用戶),最后返回對象或null。
對這個人的支持使我進入了正確的軌道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.