zoukankan      html  css  js  c++  java
  • [VSTO]清除Word文档撤消(undo)和重复(redo)

      最近在Word上做开发,使用的Open XML SDK 2.0VSTO。生成Word文件时使用了XML映射来实现内容控件(ContentControl)和自定义XML部件(CustomXMLPart)中的xml进行绑定,编辑文档时使用VSTO进行动态操作Word

      由于在编辑Word文档时,会动态添加内容控件(ContentControl),同时修改xml,进行xml映射。这就会遇到一个问题是:Word文档的撤消(undo)和重复(redo)操作,只影响内容控件(ContentControl)而不影响自定义XML部件(CustomXMLPart)中的xml,想到解决办法是禁用Word文档撤消(undo)和重复(redo)操作。在网上google之后,Word文档中不能禁用撤消(undo)和重复(redo)功能,也不允许修改撤消(undo)和重复(redo)的堆栈最大数值。但是允许清除撤消(undo)和重复(redo)的堆栈。

     

    清除当前文档的撤消(undo)堆栈

    Sub ClearActiveDocumentUndoStack()
    ActiveDocument.UndoClear
    End Sub

    清除所有打开文档的撤消(undo)堆栈

    Sub ClearAllDocumentsUndoStack()
        Dim oDocUndoStack as Object
        For Each oDocUndoStack In Application.Documents
            oDocUndoStack.UndoClear
        Next oDocUndoStack
    End Sub

      C#Document也存在对应的UndoClear方法,撤消(undo)堆栈确实清空了,按照文章中的说法重复(redo)也应该不可能了,但实际在Word2010还是可以用的。只好用个小技巧(trick),调用UndoClear后,随便select点什么就行了。重复(redo)操作也只是select什么,没有不良后果。


    参考文档:WD2000: How to Clear the Undo Stack
  • 相关阅读:
    一个php soap的错误记录
    Android 开发有哪些新技术出现?
    每个PHP开发者都应该看的书
    30 个 PHP 的 Excel 处理类
    PHP Session可能会引起并发问题
    PHP代码优化技巧大盘点
    分析和解析PHP代码的7大工具
    关于 PHP 7 你必须知道的五件事
    PHP也20岁了
    PHP高级特性二之文件处理
  • 原文地址:https://www.cnblogs.com/qishichang/p/2307933.html
Copyright © 2011-2022 走看看