WebBrowser控件在PowerPoint幻灯片中缩小

本文关键字:缩小 幻灯片 PowerPoint 控件 WebBrowser | 更新日期: 2023-09-27 18:29:52

我需要在PowerPoint幻灯片中嵌入一个WebBrowser控件,设置为特定的URL。我选择了

Shape shape =    s.Shapes.AddOLEObject(0.0f, 0.0f, 720f, 540f, "Shell.Explorer.2", "", MsoTriState.msoFalse, "", -1, "", MsoTriState.msoFalse);
shape.OLEFormat.Object.Navigate2("http://www.google.com");

到目前为止还不错,效果非常好。但是,在演示过程中,每次幻灯片更改时,我都需要刷新页面。出于这个原因,我正在做以下事情来刷新页面:

    void Application_SlideShowNextSlide(SlideShowWindow Wn)
    {
        Slide sl = Wn.View.Slide;
        foreach (Shape s in sl.Shapes)
        {
            if (s.Type == Office.MsoShapeType.msoOLEControlObject) {
                if (s.OLEFormat.Object is SHDocVw.IWebBrowser2) {
                    SHDocVw.IWebBrowser2 wb = s.OLEFormat.Object as SHDocVw.IWebBrowser2;
                    object url = (object)"http://google.com/";
                    wb.Navigate2(url);
                } 
            }
        }
    }

页面已正确刷新。然而,现在不同的是,页面会自动缩小,因此页面适合控件。即使我把控件做得更小,页面也会缩小得更大,以适应它。

WebBrowser控件在PowerPoint幻灯片中缩小

我通过创建一个自定义用户控件并在其中插入WebControl来解决这个问题。然后,我将控件设置为"COM可见",因此,我可以使用它的ProgId将其完美地包含在PowerPoint中。

这是因为您将幻灯片上的所有形状都更改为该控件,包括幻灯片本身。您需要添加一种方法来区分您的控件和其他控件。仅仅检查某个对象是否为OLE控件对象是不够的。

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.oleobject_properties%28v=vs.90%29.aspx您可以使用应用程序属性或名称或其他来进行比较。(其他选择是大小、组合)