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
  • 相关阅读:
    用于json的 .ashx 小细节
    (转)写让别人能读懂的代码
    Mvc 中ViewBag Model 查找不到解决
    Windows 2008 R2 配置 DNS 实现二级域名
    Windows Server 2008 DNS服务器安装与配置
    【iOS】swift init构造器
    【iOS】OC-UTC日期字符串格式化
    android使用sharesdk的小感
    【iOS】Swift GCD-下
    【iOS】Swift GCD-上
  • 原文地址:https://www.cnblogs.com/qishichang/p/2307933.html
Copyright © 2011-2022 走看看