Find 接口
支持文档和文件环境中的常规文本 Find 操作。
命名空间: EnvDTE
程序集: EnvDTE(在 EnvDTE.dll 中)
语法
声明
<GuidAttribute("40D4B9B6-739B-4965-8D65-692AEC692266")> _
Public Interface Find
[GuidAttribute("40D4B9B6-739B-4965-8D65-692AEC692266")]
public interface Find
[GuidAttribute(L"40D4B9B6-739B-4965-8D65-692AEC692266")]
public interface class Find
[<GuidAttribute("40D4B9B6-739B-4965-8D65-692AEC692266")>]
type Find = interface end
public interface Find
Find 类型公开以下成员。
属性
名称 | 说明 | |
---|---|---|
Action | 获取或设置查找方式,例如查找下一个匹配、查找全部、替换和查找等。 | |
Backwards | 获取或设置一个值,该值表示是否从当前位置执行向后搜索。 | |
DTE | 获取顶级扩展性对象。 | |
FilesOfType | 获取或设置要搜索的文件的文件扩展名。 | |
FindWhat | 获取或设置要查找的文本或模式。 | |
KeepModifiedDocumentsOpen | 获取或设置一个指示执行 Replace 操作后修改的文档是否仍保持打开状态的值。 | |
MatchCase | 获取或设置表示搜索是否区分大小写的值。 | |
MatchInHiddenText | 获取或设置一个值,该值表示搜索中是否包括隐藏文本。 | |
MatchWholeWord | 获取或设置一个值,该值表示搜索是否为全字匹配。 | |
Parent | 获取 Find 对象的直接父对象。 | |
PatternSyntax | 获取或设置用于指定搜索模式的语法。 | |
ReplaceWith | 获取或设置替换操作的替换文本。 | |
ResultsLocation | 获取或设置在批量搜索操作中显示结果的位置。 | |
SearchPath | 获取或设置用于“在文件中查找”操作的目录列表。 | |
SearchSubfolders | 获取或设置一个值,该值指示 Search 操作是否包括子文件夹。 | |
Target | 获取或设置搜索操作的目标,例如所有打开的文档、文件和活动文档等。 |
页首
方法
名称 | 说明 | |
---|---|---|
Execute | 根据为 Find 对象设置的选项执行搜索。 | |
FindReplace | 根据该方法的参数执行“查找”或“替换”操作,不影响为 Find 设置的选项。 |
页首
备注
Find 对象使您得以在支持搜索和替换操作的环境(例如代码编辑器)中搜索并替换文本。
它主要用于宏记录。编辑器的宏记录机制使用 Find 而不使用 TextSelection.FindPattern,这样方便您使用全局查找功能,还有一个原因是,对于“在文件中查找”这种操作来说,使用前者一般比使用 TextSelection 对象更有用。
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