如何防止按用户更改/删除自定义属性(MS Office)

时间:2019-06-11 08:33:37

标签: c# ms-word vsto add-in

我正在为MS Word创建一个加载项,其中一项功能是创建和设置documents属性。不幸的是,用户可以转到MS Word中的文档属性并更改值,甚至删除该属性。

我正在考虑使用该值存储属性并在保存每个文档之前进行设置。但是可以在外接程序代码中捕获BeforeSave事件吗?

我考虑的另一种方法是某种只读的prop / value,但对于用户是只读的,对于加载项是可编辑的。但同样,这可能是不可能的...

如果有帮助,我将下面的代码用于添加和设置PropName和PropValue。

有人知道如何解决吗? 谢谢。

Criteria eventDataCreCriteria = this.sessionFactory.getCurrentSession().createCriteria(EventData.class, "e").createAlias("e.device", "d").createAlias("d.deviceList", "dl");

eventDataCreCriteria.add(Restrictions.eq("device", device));
eventDataCreCriteria.addOrder(Order.desc("dateTime")); //line 2
eventDataCreCriteria.setMaxResults(1);
EventData eventData = (EventData) eventDataCreCriteria.uniqueResult();

2 个答案:

答案 0 :(得分:0)

事实证明,有可能在加载项中捕获Save事件。可以通过在ThisAddIn_Startup中放置Globals.ThisAddIn.Application.DocumentBeforeSave处理程序来解决。

因此,我将尝试通过保存属性的名称和值来解决问题,并且始终在保存文档之前,我将检查该属性是否存在并进行设置,或者创建该属性并设置存储的值(或删除并创建而不检查-没关系)。

亲切的问候, Konfiuzd

答案 1 :(得分:0)

您还可以将内容存储在custom XML中,这是任何人都可以编辑的唯一方法,就是在Word外部编辑docx文件。但是它不能在字段中使用。