【发布时间】:2012-03-09 09:49:51
【问题描述】:
我已经编写了一个 Visual Studio 扩展,并让它记录与我的扩展相关的用户操作。我希望能够在日志中包含我的工具所做更改的撤消/重做信息,我希望能够通过在撤消/重做发生时调用事件侦听器并检查撤消/重做对象是否是对应于我的工具生成的操作。
目前,我有代码来获取当前IWpfTextView 的ITextUndoHistory,我使用ITextUndoHistoryRegistry 来生成this answer。不幸的是,我得到的ITextUndoHistory 对象没有实现足够有用的功能。具体来说,它的UndoRedoHappened 事件被调用,但总是有null 的事务。此外,它的UndoStack/RedoStack 属性抛出System.NotSupportedException。唯一有效的是 CreateTransaction 确实给了我一个事务对象,并让我为 Visual Studio 的撤消/重做列表中显示的操作设置名称,尽管我不需要它来工作。
还有其他方法可以在 Visual Studio 中访问撤消信息吗?或者也许我可以访问一些更有创意的黑客?
【问题讨论】:
-
您为什么使用撤消/重做作为用户操作的日志?撤消历史记录可以出于多种原因被清除,因此它根本不会是永久性的。
-
@JasonMalinowski,我想知道用户是否使用我的工具执行更改,然后点击撤消以撤消该更改。
标签: c# visual-studio-2010 undo-redo visual-studio-extensions