VB 在TEXT控件中搜索字符串的问题

2024-12-21 15:13:29
推荐回答(1个)
回答1:

在窗体上画一个CommandBotton,名称为command1
在代码窗写下下边过程

Option Explicit

Private Sub Command1_Click()

Text2.SetFocus
'这里的作用是将焦点转给Text2,不然没有办法看到光标在哪里

If InStr(TempPos, Text2.Text, Text1.Text) = 0 Then Exit Sub
'先去看边的注释吧~看了下边的就明白这里是为什么了~ ^^

Text2.SelStart = InStr(1, Text2.Text, Text1.Text) - 1
'text2.selstart的意思是设置text2中光标的位置,
'后边的instr函数是查找text1字符串在text2字符串中的位置,起始查找位为1,意思就是从头开始查找.如果没有找到,instr会返回0
'最后边减的那个1是因为文本框的最左边被定义为0(这是公认的),然后向右会依次累加
'而instr认为那个位置是1,并且返回的值也会比实际的大1
'嗯嗯~
'如果你想作出"查找下一个"功能,可以试着写写,将本次查找的位置记录下来,比如说记录到某TempPos变量里
'"查找下一个"的功能就是Text2.SelStart = InStr(TempPos, Text2.Text, Text1.Text) - 1这样.
'当然,TempPos要用Static来定义或着干脆定义成模块级变量
'而且你还要再加上判断TempPos是不是<=0,因为Instr的第一个参数是不能小于0滴~
'尤其是在初始化的时候,如果不刻意给TempPos赋值的话,那TempPos就会为0,这样就会出错~
'所以建议在Form_Load过程中给TempPos一个值...呃...扯远了...

Text2.SelLength = Len(Text1.Text)
'这个功能是临近教师节的大奉送~
'text2.sellength的作用是设置text2中被选中的文本长度,就是用鼠标划上一串字符的高亮效果~
'Len()的作用当然就是返回text1.text的字符串长度了~

End Sub

上边的代码贴到VB的编辑器里比较容易看清~因为注释会变色~