This documentation is archived and is not being maintained.

UndoContext Object

Visual Studio .NET 2003

Represents, as a single transaction, all operations performed on all participating open documents in Visual Studio. If its SetAborted Method is invoked, all changes made since opening the object are discarded.



[Visual Basic .NET]
Public Interface UndoContext
    Inherits IDispatch
[Visual Basic 6]
Class UndoContext
interface UndoContext : IDispatch
public interface UndoContext : IDispatch
[JScript .NET]
public interface UndoContext extends IDispatch


The UndoContext object is returned by the UndoContext Property of the DTE Object. There is only one global undo service in Visual Studio that is either open or closed. Once the UndoContext object is opened, all updates made to documents in Visual Studio can be reversed (undone) by a single undo action, the SetAborted method, until the object is closed. If the SetAborted method is invoked, all changes made since opening the object are discarded.

To use the UndoContext object, open it, make document changes, and then close the object to finalize the changes.

If you want to discard the changes, simply call the SetAborted method before closing the UndoContext object. Once you close UndoContext, you can no longer undo the changes.

Note   Before using the UndoContext object, you should first check to see if it is already open from a previous operation. If it's already open, then your changes will be undone in all participating documents, along with all changes done since the object was first opened. If the UndoContext object is already open when you check it, you should not close it because the previous caller still requires it for an undo operation. Because of this, you should not call SetAborted and then close the UndoContext object unless you originally opened it. You should close it once you are done changing text in documents.


Namespace: EnvDTE

File: dte.olb


This example removes all newline characters from a block of selected text:

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
      ' 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
      strTS = Replace(strTS, vbNewLine, "", Compare:=vbTextCompare)
   End If

   ' If UndoContext was already open, don't close it.
   If boolWasOpen = False Then
      ' Close the UndoContext object to commit the changes.
   End If
End Sub

See Also

Properties, Methods, and Events | Undo Method | UndoContext Property (DTE Object)