PPT播放时,对象SlideShowView下的CurrentShowPosition确实能返回当前的页号。
private void butGetPageIndex(object sender, RoutedEventArgs e)
{
Console.WriteLine("当前页号:"+OSlideShowView.CurrentShowPosition.ToString());
}
以上代码点击按钮获取的页面没问题,但是需要在代码中实时获取该怎么办呢?
用定时器不是个好办法,那就用事件。
操作PPT的播放,有前一页、下一页的方法:
OSlideShowView.Next();
OSlideShowView.Previous();
这两个方法都能触发Application对象的两个对应事件:
SlideShowOnNext
SlideShowOnPrevious
但是监听这两个事件发现获取的当前页码不对,有时对有时错。经过研究发现,时间触发时,新的页面还没有加载完成,这时候获取的页码是空的,因此不可用。
有没有一个时间,是能在页面变化后触发呢?
有的,就是:SlideShowNextSlide 事件。
微软原文:“在即将切换到下一张幻灯片之前发生此事件”。当初见过这个事件,可能是翻译问题,导致我忽略了。进过测试,发现这句话是:“在即将切换到新一张幻灯片之前发生此事件”。这就是我们要的!
ObjApp.SlideShowNextSlide += ObjApp_SlideShowNextSlide;//注册 监听换页 事件
然后:
//监听播放换页事件
private void ObjApp_SlideShowNextSlide(ppt.SlideShowWindow Wn)
{
Console.WriteLine("SlideShowNextSlide:" + OSlideShowView.CurrentShowPosition.ToString());
}
运行测试,确认了这个方法,不管是向上换页还是向下换页,都能很好的出发这个事件,也能顺利获得准确的页码。