UndoContext-Schnittstelle
Stellt als einzelne Transaktion alle Vorgänge dar, die in allen beteiligten geöffneten Dokumenten in Visual Studio durchgeführt werden. Wenn die zugehörige SetAborted-Methode aufgerufen wird, werden alle Änderungen verworfen, die nach dem Öffnen des Objekts vorgenommen wurden.
Namespace: EnvDTE
Assembly: EnvDTE (in EnvDTE.dll)
Syntax
'Declaration
<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
Der UndoContext-Typ macht die folgenden Member verfügbar.
Eigenschaften
Name | Beschreibung | |
---|---|---|
DTE | Ruft das Erweiterbarkeitsobjekt der obersten Ebene ab. | |
IsAborted | Stellt fest, ob der für das UndoContext-Objekt ausgeführte Vorgang von der SetAborted-Methode beendet wurde. | |
IsOpen | Stellt fest, ob derzeit ein Rückgängig-Vorgang aktiv oder eine Projektmappe geöffnet ist. | |
IsStrict | Stellt fest, ob die Bindung des Rückgängig-Stapels strikt ist. | |
Parent | Ruft das unmittelbar übergeordnete Objekt eines UndoContext-Objekts ab. |
Zum Seitenanfang
Methoden
Name | Beschreibung | |
---|---|---|
Close | Beendet einen Rückgängig-Vorgang. | |
Open | Startet einen neuen Rückgängig-Vorgang. | |
SetAborted | Verwirft alle Änderungen an den beteiligten, geöffneten Dokumenten, die seit dem Öffnen des UndoContext-Objekts vorgenommen wurden. |
Zum Seitenanfang
Hinweise
Das UndoContext-Objekt wird von der UndoContext-Eigenschaft des _DTE-Objekts zurückgegeben. In Visual Studio ist nur ein globaler Rückgängig-Dienst vorhanden, der entweder geöffnet oder geschlossen ist. Nachdem das UndoContext-Objekt geöffnet wurde, können alle in Visual Studio an Dokumenten vorgenommenen Aktualisierungen mit einer einzigen Rückgängig-Aktion, der SetAborted-Methode, rückgängig gemacht werden, bis das Objekt geschlossen wird. Wenn die SetAborted-Methode aufgerufen wird, werden alle Änderungen verworfen, die nach dem Öffnen des Objekts vorgenommen wurden.
Um das UndoContext-Objekt zu verwenden, öffnen Sie es, nehmen Änderungen am Dokument vor und schließen das Objekt dann, um die Änderungen abzuschließen.
Um die Änderungen zu verwerfen, rufen Sie die SetAborted-Methode vor dem Schließen des UndoContext-Objekts auf. Nachdem Sie das UndoContext-Objekt geschlossen haben, können die Änderungen nicht mehr rückgängig gemacht werden.
Tipp
Überprüfen Sie vor Verwendung des UndoContext-Objekts, ob es durch einen vorherigen Vorgang bereits geöffnet wurde. Wenn es bereits geöffnet ist, werden die Änderungen in allen beteiligten Dokumenten sowie alle Änderungen, die nach dem ersten Öffnen des Objekts vorgenommen wurden, rückgängig gemacht. Wenn das UndoContext-Objekt bei der Überprüfung bereits geöffnet ist, sollten Sie es nicht schließen, da es vom vorherigen Aufrufer weiterhin für einen Rückgängig-Vorgang benötigt wird. Folglich sollten Sie SetAborted nur aufgerufen und das UndoContext-Objekt anschließend schließen, wenn es ursprünglich auch von Ihnen geöffnet wurde. Schließen Sie das Objekt, nachdem die Textänderungen in den Dokumenten abgeschlossen sind.
Beispiele
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