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
  • 相关阅读:
    在eclipse中运行正常的java项目放到tomcat中报错的解决办法
    xml和json之间的转换
    读取文件工具类
    java解压文件
    常用语句
    形容词&&人称词
    称呼
    单词-数字使用
    单词-数字:十位20-29
    单词-数字:十位11-19
  • 原文地址:https://www.cnblogs.com/qishichang/p/2307933.html
Copyright © 2011-2022 走看看