0

我需要一个 WebBrowser 控件,设置为特定的 URL,嵌入到 PowerPoint 幻灯片中。我已经和

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);
                } 
            }
        }
    }

页面已正确刷新。但是,现在不同的是页面会自动缩小,因此页面适合控件内部。即使我使控件更小,页面也会被进一步缩小,以适应其中。

4

2 回答 2

1

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

于 2013-09-12T13:35:42.837 回答
0

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

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

于 2013-09-02T18:14:58.240 回答