UndoContext インターフェイス

更新 : 2007 年 11 月

Visual Studio に参加している、すべての開いているドキュメントに対して実行されたすべての操作を 1 つのトランザクションとして表します。SetAborted メソッドを呼び出すと、オブジェクトを開いてから行った変更がすべて破棄されます。

名前空間 :  EnvDTE
アセンブリ :  EnvDTE (EnvDTE.dll 内)

構文

'宣言
<GuidAttribute("D8DEC44D-CAF2-4B39-A539-B91AE921BA92")> _
Public Interface UndoContext
'使用
Dim instance As UndoContext
[GuidAttribute("D8DEC44D-CAF2-4B39-A539-B91AE921BA92")]
public interface UndoContext
[GuidAttribute(L"D8DEC44D-CAF2-4B39-A539-B91AE921BA92")]
public interface class UndoContext
public interface UndoContext

解説

UndoContext オブジェクトは、_DTE オブジェクトの UndoContext プロパティから返されます。Visual Studio が開いているかどうかにかかわらず、元に戻すサービスはグローバルに 1 つだけ存在します。UndoContext オブジェクトを開いた後に Visual Studio のドキュメントに対して行ったすべての更新は、1 つのアクション (SetAborted メソッド) で元に戻すことができます。この操作は、オブジェクトを閉じるまで可能です。SetAborted メソッドを呼び出すと、オブジェクトを開いてから行った変更がすべて破棄されます。

UndoContext オブジェクトを使用するには、オブジェクトを開き、ドキュメントに変更を行います。オブジェクトを閉じると、変更が完了します。

変更を破棄するには、UndoContext オブジェクトを閉じる前に SetAborted メソッドを呼び出します。UndoContext オブジェクトを閉じると、変更を元に戻すことはできません。

xxxwk0f8.alert_note(ja-jp,VS.90).gifメモ :

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

参照

参照

UndoContext メンバ

EnvDTE 名前空間