C# - 连续显示PowerPoint演示文稿

时间:2011-01-25 15:58:54

标签: c# .net ms-office powerpoint

我想在连续循环中播放一些ppt文件,但是当我在第一张幻灯片到达最后一张幻灯片后打开一个新文件时,会打开一个新的PowerPoint窗口并启动幻灯片。 我该如何解决这个问题?

        public Microsoft.Office.Interop.PowerPoint.SlideShowWindow startppt(string pptDatei)
    {
        WatchingLabel.Text = "Präsentation läuft...";
        started = true;
        ende = false;
        objPres = ppApp.Presentations.Open(pptDatei, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoTrue);

        objPres.SlideShowSettings.ShowWithAnimation = Microsoft.Office.Core.MsoTriState.msoTrue;
        presWin = objPres.SlideShowSettings.Run();

        return presWin;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        WatchingLabel.Text = "Watching...";

        if (System.IO.Directory.Exists(ordner))
        {
            pptDatei.Clear();
            pptDatei.AddRange(System.IO.Directory.GetFiles(ordner, "*.ppt"));

            if (started == true && presWin.View.State == Microsoft.Office.Interop.PowerPoint.PpSlideShowState.ppSlideShowDone)
            {
                objPres.Close();
                ende = true;
                started = false;
            }

            if (pptDatei.Count > 0 && ende && started == false)
            {
                if (index < pptDatei.Count)
                {
                    startppt(pptDatei[index]);
                    index += 1;
                }
                else
                {
                    index = 0;
                }
            }
            else if (pptDatei.Count > 0 && ende == false && started == true)
            {
                presWin.View.Next();
            }

        }
    }

    public void ppApp_PresentationClose(Microsoft.Office.Interop.PowerPoint.Presentation Pres) 
    {
        pptDatei = new List<string>();
        started = false;
        ende = true;
        WatchingLabel.Text = "Präsentation beenden...";
    }

    public void ppApp_SlideShowEnd(Microsoft.Office.Interop.PowerPoint.Presentation Pres) 
    {
        ende = true;
        started = false;
    }

1 个答案:

答案 0 :(得分:1)

不幸的是,不,你不能用多个PowerPoint文件来做这件事。在PowerPoint 2010之前,您不能同时运行多个PPT(即使使用PP2010,也不能这样做)。因此,通过关闭一个并打开一个新的运行,您将失去主运行窗口。

您可以创建多个PowerPoint实例,将它们设置为可见/隐藏,然后当一个幻灯片结束时,以编程方式取消隐藏下一个并显示它以运行,但这将遭受与您已有的相同的闪烁问题。

您可以做的最好的事情是阅读目录中的所有ppts,按照您需要的顺序将它们全部合并到一个新的牌组中(并指定布局等),然后在Kiosk循环中运行该单板。 / p>