Find インターフェイス
更新 : 2007 年 11 月
ドキュメントやファイルを編集できる環境での一般的なテキストの Find 操作をサポートします。
名前空間 : EnvDTE
アセンブリ : EnvDTE (EnvDTE.dll 内)
構文
'宣言
<GuidAttribute("40D4B9B6-739B-4965-8D65-692AEC692266")> _
Public Interface Find
'使用
Dim instance As Find
[GuidAttribute("40D4B9B6-739B-4965-8D65-692AEC692266")]
public interface Find
[GuidAttribute(L"40D4B9B6-739B-4965-8D65-692AEC692266")]
public interface class Find
public interface Find
解説
Find オブジェクトを使用すると、検索や置換をサポートするコード エディタなどの環境にあるテキストを検索および置換できます。
Find オブジェクトは、主にマクロの記録を目的として開発されました。エディタのマクロ記録機構では、TextSelection.FindPattern ではなく、Find を使用してグローバル検索機能を実行できます。一般に、複数ファイルからの検索操作などでは、この方法は TextSelection オブジェクトを使用するよりも便利です。
Visual Studio 環境には、検索機能を備えたすべての Visual Studio ツール間で共有されるグローバル検索状態があります。たとえば、Visual Studio のすべての要素は、セッション中に使用された検索パターンの履歴や、開いたドキュメントに対する次の Find 操作が前方検索であるか後方検索であるかの情報を共有します。Find オブジェクトのプロパティは、グローバル検索状態と情報をやり取りし、追跡します。Find オブジェクトのプロパティを設定すると、グローバル検索状態も設定されます。ユーザーが環境内で Find 操作を実行すると、実行した検索の種類が Find オブジェクトに保存されます。環境の UI スレッドと同期してオートメーション コードが実行されるので、Execute を呼び出す前に、あらかじめプロパティを設定し、ユーザーに検索を実行させる必要はありません。
Execute メソッドは、Find オブジェクトの設定に基づいて Find 操作を実行します。また、FindReplace メソッドに引数を渡して、グローバル検索状態に影響を与えずに検索を実行することもできます。オートメーション クライアントで検索を実行する場合、グローバル検索状態やエンド ユーザーが使用している環境の状態モデルに影響を与えないようにする必要があります。
例
Sub FindExample()
Dim objTextDoc As TextDocument
Dim objEditPt As EditPoint
Dim iCtr As Integer
Dim objFind As Find
' Create a new text file.
DTE.ItemOperations.NewFile("General\Text File")
' Get a handle to the new document and create an EditPoint.
objTextDoc = DTE.ActiveDocument.Object("TextDocument")
objEditPt = objTextDoc.StartPoint.CreateEditPoint
objFind = objTextDoc.DTE.Find
' Insert ten lines of text.
For iCtr = 1 To 10
objEditPt.Insert("This is a test." & Chr(13))
Next iCtr
' Set the find options.
objFind.Action = vsFindAction.vsFindActionReplaceAll
objFind.Backwards = False
objFind.FilesOfType = "*.txt"
objFind.FindWhat = "test"
objFind.KeepModifiedDocumentsOpen = True
objFind.MatchCase = False
objFind.MatchInHiddenText = False
objFind.MatchWholeWord = True
objFind.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral
objFind.ReplaceWith = "NEW THING"
objFind.ResultsLocation = vsFindResultsLocation.vsFindResultsNone
objFind.SearchPath = "c:\temp"
objFind.SearchSubfolders = False
objFind.Target = vsFindTarget.vsFindTargetCurrentDocument
' Perform the Find operation.
objFind.Execute()
End Sub