我试了一下这个函数,查找下一个,我也无法做到,只查到第一个,指定了范围也是同样。无语。
下面是这个函数的 MSDN 的说明
----------------------------------------
Find 方法
根据给定的字符串,在 RichTextBox 控件中搜索文本。不支持命名的参数。
语法
object.Find(string, start, end, options)
Find 方法的语法包含下面部分:
部分 描述
object 必需的。对象表达式,其值是“应用于”列表中的一个对象。
string 必需的。要在控件中查找的字符串表达式。
start 可选的。决定从哪儿开始搜索的整数字符索引。控件中的每一个字符都有一个可唯一标识的整数索引。控件中文本的第一个字符的索引是 0。
end 可选的。决定在哪儿结束搜索的整数字符索引。
options 可选的。用来指定一个或多个可选功能常数的和。所指定的功能如“设置值”中所述。
设置值
对 options 的设置值包括:
常数 值 描述
rtfWholeWord 2 确定匹配是基于整个单词还是单词的片段。
rtfMatchCase 4 确定匹配是否基于指定字符串与字符串文本的大小写字体一致。
rtfNoHighlight 8 确定匹配是否在 RichTextBox 控件中突出显示。
通过把它们的值或常数相加、或者用 Or 运算符使这些值相结合的形式,可使用多个选项。
说明
如果找到被搜索的文本,Find 方法将突出显示所指定的文本,同时返回突出显示的第一个字符的索引。如果所指定的文本没有找到,Find 方法则返回 -1。
当 HideSelection 属性是 True、且 RichTextBox 控件没有焦点时,如果所使用的 Find 方法没有 rtfNoHighlight 选项,则控件仍然突出显示所找到的文本。此后使用 Find 方法,若插入点不移动,将只搜索突出显示的文本。
Find 方法搜索行为,基于 start 和 end 参数指定值的组合而变化。下表描述了可能的搜索行为:
开始 结束 搜索行为
指定 指定 从指定的开始位置到指定的结束位置进行搜索。
指定 忽略 在控件中,从指定的位置搜索到文本尾。
忽略 指定 从当前插入点搜索到指定的结束位置。
忽略 忽略 若选择了文本,从当前选择开始搜索;若没选择文本,则搜索控件的整个内容。
----------------------------------------------
我以前写的不用这个函数的查找。
常量定义,在BAS模块文件中的
Public Const 查找标记 = 1
Public Const 替换标记 = 2
Public Const 查找方向向上 = 3
Public Const 查找方向向下 = 4
--------------------------------
这个函数是在窗体中的,由另一个自定义查找窗体调用的。支持向上,向下查找。
Public Function 查找(cs As String, Optional 方向 As Long = 查找方向向下) As Boolean
查找 = False
Dim j As Long
j = Len(cs)
If j = 0 Then
Exit Function
End If
Dim i As Long
Dim o As Long
o = txtbox.SelStart
If o <= 0 Then o = 1
If o > 1 Then o = o + 1
Select Case 方向
Case 查找方向向下
i = InStr(o, txtbox.Text, cs)
If i > 0 Then
查找 = True
End If
Case 查找方向向上
i = InStrRev(txtbox.Text, cs, o)
If i > 0 Then
'txtbox.SelStart = i - 1
'txtbox.SelLength = j
查找 = True
End If
End Select
If 查找 Then
txtbox.SelStart = i - 1
txtbox.SelLength = j
frmMain.SetFocus
txtbox.SetFocus
End If
End Function