当前位置:编程学习 > C#/ASP.NET >>

脑子木了,简单方法调用问题,求解决方案?有代码有真相

怎么能让SlideShow(int page)方法在比对得到动画不一致的情况下调用。
起初想法是重载GetInfo()方法,返回Presentation,现在看来好像不行,因为这样的话,CopyItem()方法会因为方法返回类型不明确而报错。

看真相:


         #region 遍历幻灯片并提取相应动画信息
        /// <summary>
        /// 
        /// </summary>

        public List<string> mi_GetInfo()
        {


            pptApp.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
            pptPresentation = pptApp.Presentations.Open(fileName, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue);
            mi_logview.Write(LogView.eType.Success, "文档读取成功,从第一个动画页开始分析并提取相关信息...");


            foreach (PowerPoint.Slide slide in pptPresentation.Slides)
            {

                foreach (PowerPoint.Shape shape in slide.Shapes)
                {

                    if (slide.TimeLine.MainSequence.FindFirstAnimationFor(shape) != null)
                    {


                        Ani_item.Add("当前页面是第 " + slide.SlideNumber.ToString() + " 页");
...此处省略代码若干,基本都是添加泛型集合
                    }


                }
                mi_logview.Write(LogView.eType.Success, "当前第 " + slide.SlideNumber.ToString() + " 页分析完成");
                mi_logview.Write(LogView.eType.Normal, "==============================================");


            }


            //pptApp.Quit();

            GC.Collect();
            return Ani_item;

        }


        #endregion
        此处为放弃的方案
        #region GetInfo 重载
        #endregion
        #region 跟踪信息
        /// <summary>
        /// 在LogView中跟踪信息提取
        /// </summary>

        public void TraceAnimation()
        {
            foreach (string InfoStr in Ani_item)
            {
                mi_logview.Write(LogView.eType.Trace, InfoStr);

            }

        }
        #endregion
        #region 拷贝数据
        /// <summary>
        /// 将分析得到的数据拷贝
        /// </summary>

        public void CopyItem()
        {
            Ani_item2 = mi_GetInfo();
        }
        public void ComyItem2()
        {
            Ani_item1 = mi_GetInfo();
        }
        #endregion

        #region 分析暂停,并演示幻灯片
        /// <summary>
        /// 
        /// </summary>
        /// 
        protected void DelaySlideShow()
        {
          声明了Timer,哪位仁兄好心能给出方案让放映幻灯片的同时让Richtextbox 停止工作,不胜感谢
        }
        #endregion
        #region 比较动画信息
        /// <summary>
        /// 将动画按顺序比较
        /// </summary>
        /// <param name="page"></param>
        /// 
        public void Compare()
        {
            if (Ani_item1.Count != Ani_item2.Count)
            {
                MessageBox.Show("两个文件页数长度不一致或提取数据出现异常!请核对是否打开了使用了正常的文件进行比对?");

            }

            try
            {
                for (int i = 0; i < Ani_item2.Count; i++)
                {


                    if (Ani_item1[i] == Ani_item2[i])
                    {

                        MessageBox.Show("相同 ");
                    }
                    else if (Ani_item1[i] != Ani_item2[i])
                    {
                        MessageBox.Show("比对结果发生在第" + Epage + "页!");
                         SlideShow(Epage)
                    }
                    else
                    {

                    }

                }

            }
            catch (ArgumentException e)
            {
                MessageBox.Show("异常: 程序检测到两个文件动画数据长度不一致,   " + e.ToString());
            }

        }
        #endregion


        public void SlideShow(int page)
        {
            pptPresentation.SlideShowSettings.RangeType = Microsoft.Office.Interop.PowerPoint.PpSlideShowRangeType.ppShowSlideRange;
            pptPresentation.SlideShowSettings.StartingSlide = page;
            pptPresentation.SlideShowSettings.EndingSlide = page + 1;
            pptPresentation.SlideShowSettings.Run();

        }


    }

}

--------------------编程问答-------------------- 荷,ppt的二次开发,这种东西还真是少见啊

mark一下先 --------------------编程问答-------------------- 少见,不懂.替你急啊. --------------------编程问答-------------------- 别介!来个人嘛 --------------------编程问答-------------------- VBA? 没搞过PPT 。 mark --------------------编程问答-------------------- Richtextbox 停止工作

此控件工作的时候在做什么事情 --------------------编程问答--------------------
引用 5 楼 yilanwuyu123 的回复:
Richtextbox 停止工作

此控件工作的时候在做什么事情


Log 文字,提示软件信息报一些错误。

--------------------编程问答-------------------- 不懂·帮顶 = - --------------------编程问答-------------------- 帮不了忙,只有一顶了 --------------------编程问答-------------------- 帮不了忙,只有一顶了 --------------------编程问答-------------------- 哎,真没有人能顶啊。 --------------------编程问答-------------------- 帮忙顶起
--------------------编程问答-------------------- 学习,帮顶 --------------------编程问答-------------------- 不会,只能帮顶 --------------------编程问答-------------------- 帮顶了,实在不懂! --------------------编程问答-------------------- 再顶了。 --------------------编程问答-------------------- 顶起! --------------------编程问答-------------------- 我再顶起! --------------------编程问答-------------------- 楼主别急。。等阿捷。。逍遥。。过客他妈来了就好办了。。_-_ --------------------编程问答-------------------- 我顶内个肺 --------------------编程问答--------------------
引用 18 楼 gs670gs 的回复:
楼主别急。。等阿捷。。逍遥。。过客他妈来了就好办了。。_-_

这些人是高手? --------------------编程问答-------------------- --------------------编程问答--------------------

//接着顶
--------------------编程问答-------------------- 不太明白你的意思:
1、你的richTextBox控件名是?
2、DelaySlideShow你要在哪里调用?

你目前的程序,哪些代码行是写入log等信息到richTextBox的?
是通过 mi_logview.Write(LogView.eType.Trace, InfoStr);
操作的? --------------------编程问答-------------------- 其实主要问题 是slideshow()方法调用的时候,没有办法把 pptApp pptPresentation 两个接口传递过来 。我考虑过放到构造函数中初如化这两个接口,但是因为是两个或多个PPT进行分析,如果这样,调 用方法的时候就会又重新打开当前的PPT,这样就重复了。

不是知道仁兄有没有更好的办法。

引用 23 楼 computerfox 的回复:
不太明白你的意思:
1、你的richTextBox控件名是?
re: 就是mi_logview,继承自RichTextBox,用来显示一些Log 信息。
2、DelaySlideShow你要在哪里调用?
re:这个方法暂时不用。主要作用是在对数据分析完成后,根据信息对PPT进行一些操作,具体操作办法是在Compare()方法有返回Slide页数之后,再重载这个方法进行操作。

你目前的程序,哪些代码行是写入log等信息到richTextBox的?
是通过 mi_logview.Write(LogView.eType.Trace, InfoStr);
操作的?
re:对,没有错!


--------------------编程问答-------------------- 不懂·帮顶 = - --------------------编程问答--------------------
引用 1 楼 wanghui0380 的回复:
荷,ppt的二次开发,这种东西还真是少见啊

mark一下先


又见放歌大大
你上次写的那个小算法 俺还记忆犹新啊 --------------------编程问答-------------------- 哥们,半夜的,看到回复还多高兴呢。您老人家聊天来着。
引用 26 楼 vip__888 的回复:
引用 1 楼 wanghui0380 的回复:
荷,ppt的二次开发,这种东西还真是少见啊

mark一下先


又见放歌大大
你上次写的那个小算法 俺还记忆犹新啊
--------------------编程问答-------------------- 再顶! --------------------编程问答-------------------- 是的。。在我眼中是高手。。有些解决办法他们用的很纯熟。。特别阿捷。。分涨啊。。哈哈哈
引用 20 楼 robin521 的回复:
引用 18 楼 gs670gs 的回复:
楼主别急。。等阿捷。。逍遥。。过客他妈来了就好办了。。_-_

这些人是高手?
--------------------编程问答-------------------- 问题能解决什么都好说,现在没有人能说出个123
--------------------编程问答-------------------- --------------------编程问答-------------------- 又一个凑热闹的,期盼高手出现。 --------------------编程问答-------------------- 楼主的代码看不懂啊:
两个或多个ppt进行分析?但在代码里没看到有多个pptApp啊!
CopyItem(),CopyItem2()这两个方法得到的结果不是一样的嘛?
楼主的代码都是一个类里面的方法?这个类只有一个实例?依次调用这个类的CopyItem(),CopyItem2(),Compare()就能比较了? --------------------编程问答-------------------- 学习,帮顶
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,