UndoContext 接口

作为单个事务,表示对 Visual Studio 中所有参与的打开文档执行的所有操作。 如果调用它的 SetAborted 方法,则自打开该对象以来所做的所有更改都被放弃。

命名空间:  EnvDTE
程序集:  EnvDTE(在 EnvDTE.dll 中)

语法

声明
<GuidAttribute("D8DEC44D-CAF2-4B39-A539-B91AE921BA92")> _
Public Interface UndoContext
[GuidAttribute("D8DEC44D-CAF2-4B39-A539-B91AE921BA92")]
public interface UndoContext
[GuidAttribute(L"D8DEC44D-CAF2-4B39-A539-B91AE921BA92")]
public interface class UndoContext
[<GuidAttribute("D8DEC44D-CAF2-4B39-A539-B91AE921BA92")>]
type UndoContext =  interface end
public interface UndoContext

UndoContext 类型公开以下成员。

属性

  名称 说明
公共属性 DTE 获取顶级扩展性对象。
公共属性 IsAborted 获取指示 UndoContext 对象操作是否由 SetAborted 方法终止的值。
公共属性 IsOpen 获取指示撤消操作当前是否生效,或是否打开了解决方案的值。
公共属性 IsStrict 获取指示撤消堆栈链接是否严格的值。
公共属性 Parent 获取 UndoContext 对象的直接父对象。

页首

方法

  名称 说明
公共方法 Close 结束撤消操作。
公共方法 Open 开始新的撤消操作。
公共方法 SetAborted 放弃自打开 UndoContext 对象以来对参与的打开文档所做的一切更改。

页首

备注

UndoContext 对象由 _DTE 对象的 UndoContext 属性返回。 在 Visual Studio 中只有一个全局撤消服务,该服务不是打开就是关闭。 打开 UndoContext 对象后,在关闭该对象前对 Visual Studio 中的文档所做的一切更新都可以通过单个撤消操作(SetAborted 方法)反转(撤消)。 如果调用了 SetAborted 方法,则自打开该对象以来所做的所有更改都被放弃。

若要使用 UndoContext 对象,请将其打开,对文档进行更改,然后关闭该对象以完成更改。

若要放弃更改,请在关闭 UndoContext 对象前调用 SetAborted 方法。 关闭 UndoContext 对象后,就无法再撤消更改。

备注

在使用 UndoContext 对象前,请先检查前一个操作中是否已打开了它。如果已打开,则在所有参与的文档中所做的更改以及从第一次打开该对象后所做的所有更改都将撤消。如果 UndoContext 对象在您检查它时已经打开,请不要关闭它,因为前一个调用方仍需要它以进行撤消操作。因此,除非 UndoContext 对象是您最初打开的,否则不应调用 SetAborted 并在这之后关闭该对象。在更改完文档中的文本后,请关闭该对象。

示例

Sub UndoContextExample()
   ' Before running, select text in an open document.
   Dim txtSel As TextSelection
   Dim strTS As String, boolWasOpen As Boolean
   txtSel = DTE.ActiveDocument.Selection
   strTS = txtSel.Text

   ' Check to see if UndoContext object is already open.
   If DTE.UndoContext.IsOpen = True Then
      boolWasOpen = True
   Else
      ' Open the UndoContext object to track changes.
      DTE.UndoContext.Open("RemoveNewLines", False)
   End If

   ' Perform search for newline characters and remove them.
   If strTS <> "" Then
      txtSel.Delete()
      strTS = Replace(strTS, vbNewLine, "", Compare:=vbTextCompare)
      txtSel.Insert(strTS)
   End If

   ' If UndoContext was already open, do not close it.
   If boolWasOpen = False Then
      ' Close the UndoContext object to commit the changes.
      DTE.UndoContext.Close()
   End If
End Sub

请参阅

参考

EnvDTE 命名空间