如何在用户编辑Word批注后保持Interop Comment对象的引用关联?
保持VSTO中Comment对象与Word批注的持久关联
问题场景
我的对象包含一个引用VSTO应用中Comment对象的属性,但该引用仅对应实例化时的批注状态。当用户在Word客户端中编辑该批注后,原Comment对象既不会同步显示更新内容,也不再与Word中的原批注保持关联。
可行解决方案(初步验证有效)
不要直接依赖Comment对象的内存引用,而是通过批注的唯一标识来重新获取最新实例,核心逻辑:
- COM互操作生成的Runtime Callable Wrapper(RCW)对象会在目标COM对象状态变更后失效,导致原引用无法关联到更新后的批注
- 利用Word批注的唯一属性(比如
Comment.ID,或其Range的位置特征)作为持久标识 - 每次需要访问批注时,遍历文档的
Comments集合,通过匹配唯一标识获取当前状态的Comment实例,确保操作的是Word中最新的批注对象
内容的提问来源于stack exchange,提问作者Peter Dongan
相关产品推荐
相关产品推荐

