VB搜索RichTextBox1时为什么第二次就不行了

来源:百度知道 编辑:UC知道 时间:2024/07/01 02:53:33
Private Sub Command1_Click()
RichTextBox1.Find (Text1.Text)
End Sub
点完第一次,第二次搜总是不搜

Find 方法的语法如下:
object.Find(string[, start][, end][, options])
当没有指定搜索范围(start 与 end )时,
如果选择了文本,
则 Find 只搜索被选择的文本;
若没选择文本,
则搜索控件的整个内容。

因此您使用
RichTextBox1.Find "s"
第一搜索时,文本“s”被选择,
第二次搜索时,只会搜索选定的文本,而选定的文本就是上次查找的内容,因此才会出现不能二次搜索的问题。

可以这样写(从光标向下搜索):
If RichTextBox1.Find("s", RichTextBox1.SelStart + RichTextBox1.SelLength) = -1 Then
MsgBox "未找到指定的文本。", 48
End If

RichTextBox 不支持直接向上搜索。
但是,代码不能这样写:
RichTextBox1.Find "s", RichTextBox1.SelStart, Len(RichTextBox1.Text)
这样同样会出现只能一次性搜索的问题。

Find 方法(MSDN)
根据给定的字符串,在 RichTextBox 控件中搜索文本。不支持命名的参数。

语法:
object.Find(string, start, end, options)
Find 方法的语法包含下面部分:
object:必需的。对象表达式,其值是“应用于”列表中的一个对象。
string:必需的。要在控件中查找的字符串表达式。
start:可选的。决定从哪儿开始搜索的整数字符索引。控件中的每一个字符都有一个可唯一标识的整数索引。控件中文本的第一个字符的索引是 0。
end:可选的。决定在哪儿结束搜索的整数字符索引。
options:可选的。用来指定一个或多个