查看: 540  |  回复: 0
  VB6 RichTextBox的语法
楼主
发表于 2023年12月27日 22:08

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:可选的。用来指定一个或多个可选功能常数的和。所指定的功能如“设置值”中所述。

设置值:
对 options 的设置值包括:
常数[值]:描述

rtfWholeWord[2]:确定匹配是基于整个单词还是单词的片段。
rtfMatchCase[4]:确定匹配是否基于指定字符串与字符串文本的大小写字体一致。
rtfNoHighlight[8]:确定匹配是否在 RichTextBox 控件中突出显示。

通过把它们的值或常数相加、或者用 Or 运算符使这些值相结合的形式,可使用多个选项。
说明:
如果找到被搜索的文本,Find 方法将突出显示所指定的文本,同时返回突出显示的第一个字符的索引。如果所指定的文本没有找到,Find 方法则返回 -1。
当 HideSelection 属性是 True、且 RichTextBox 控件没有焦点时,如果所使用的 Find 方法没有 rtfNoHighlight 选项,则控件仍然突出显示所找到的文本。此后使用 Find 方法,若插入点不移动,将只搜索突出显示的文本。
Find 方法搜索行为,基于 start 和 end 参数指定值的组合而变化。下表描述了可能的搜索行为:
开始 结束 搜索行为

指定 指定 从指定的开始位置到指定的结束位置进行搜索。
指定 忽略 在控件中,从指定的位置搜索到文本尾。
忽略 指定 从当前插入点搜索到指定的结束位置。
忽略 忽略 若选择了文本,从当前选择开始搜索;若没选择文本,则搜索控件的整个内容。


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com