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 物件時它已經開啟,請勿將之關閉,因為前一個呼叫端仍需要它來執行復原作業。因此,除非您是原始的開啟者,否則不應呼叫 SetAborted,然後關閉 UndoContext 物件。在您完成於文件中變更文字後,請將之關閉。 |
範例
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