在BeforeSave
事件中,我想检查用户是否修改了哪些幻灯片。从技术上讲,我想检查幻灯片打开时的状态是什么,以及保存时的状态是什么,因此,我将获得对幻灯片进行修改的所有确认。
private void Application_PresentationBeforeSave(Presentation Pres, ref bool Cancel)
{
MessageBox.Show("before save event.....HITED");
}
此事件成功击中。我想检查幻灯片是否被用户修改。我知道以下可能的方法,
演示文稿打开事件上的(1)将所有幻灯片都转换为图像=>启用之前,保存事件再次将所有幻灯片中的图像转换为图像,然后比较该图像。但这是冗长且耗时的方法。所以我不能使用
(2)在演示文稿打开事件上,获取每张幻灯片presentaionML,然后在保存前获取presentaionML,然后比较这些字符串。这也是不可靠的过程。我尝试过这个。 zip PPT然后解压缩,它将显示文件夹结构。.slide文件夹在那里包含所有幻灯片xml的单独文件。但是此xml文件不包含任何幻灯片ID或其他内容(唯一标识符),因此我们无法自信地与另一个目的地进行比较slide.xml文件。 (如果用户更改幻灯片的序列或删除幻灯片,则此情况将失败)
(3)我尝试了第三种方法,例如,在文件打开事件上复制PPT文件,然后在保存事件访问之前,使用
将复制的PPT和每个幻灯片对象与当前活动的PPT幻灯片对象进行比较。bool flag =obj1.Equals(obj2);
,但这总是返回false。因为obj1家庭成员处于活动状态。 obj2是非活动演示文稿的成员(因为我们以实用方式打开了它)。因此即使两边的幻灯片都相同,它也会返回false。
是任何内置方法。像这样会给打开后的幻灯片列表....?
任何人都有其他解决此问题的方法.....?
我正在VSTO c#PowerPoint中工作。 .net Framework 4.5