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 | SetAborted メソッドが UndoContext オブジェクトの操作を終了したかどうかを示す値を取得します。 | |
IsOpen | 元に戻す操作が現在有効かどうか、またはソリューションが開かれているかどうかを示す値を取得します。 | |
IsStrict | 元に戻すスタックのリンケージが厳密かどうかを示す値を取得します。 | |
Parent | UndoContext オブジェクトの直接の親オブジェクトを取得します。 |
このページのトップへ
メソッド
名前 | 説明 | |
---|---|---|
Close | 元に戻す操作を終了します。 | |
Open | 元に戻す操作を新たに開始します。 | |
SetAborted | UndoContext オブジェクトを開いた後に行われた、現在開かれている対象ドキュメントに対するすべての変更を破棄します。 |
このページのトップへ
解説
UndoContext オブジェクトは、_DTE オブジェクトの UndoContext プロパティから返されます。Visual Studio が開いているかどうかにかかわらず、元に戻すサービスはグローバルに 1 つだけ存在します。UndoContext オブジェクトを開いた後に Visual Studio のドキュメントに対して行ったすべての更新は、1 つの元に戻す操作 (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