以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]文本框中查找值显示问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179744)

--  作者:2425004926
--  发布时间:2022/9/6 21:32:00
--  [求助]文本框中查找值显示问题
在文本框中查找值时,如果文本太多,当查找到显示的行下面时,滚动条也没有下移,这时查找的值将看不到,如何能让滚动条自动移动?

Dim txt As WinForm.TextBox = e.Form.Controls("TextBox1")
Dim s1 As String = e.Form.Controls("TextBox2").Text
Dim idx As Integer = vars("位置")
If s1 > "" And s1 <> "查找..." Then
    idx = IIf(idx = -1, 0, idx + s1.length) \'光标位置在最开始时,位置为0,否则位置等于现有位置+搜索字符长度
    
    Dim i As Integer = txt.text.SubString(idx).IndexOf(s1) \'查找现有位置以后的文本,搜索该字符出现的下一个位置
    txt.Select \'选择该控件
    If i = -1 Then \'如果没有找到
        i = txt.text.IndexOf(s1) \'则在文本框中重新查找
        If i = -1 Then \'如果没有找到
            vars("位置") = -1 \'不显示,不选取
            txt.SelectionStart = 0 \'从起始位置选取,最小为0,不能是-1
            txt.SelectionLength = 0 \'选定字符串的长度
            Messagebox.show("没有找到您要查找的值!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            vars("位置") = i \'如果找到了
            txt.SelectionStart = i \'从起始位置选取
            txt.SelectionLength = s1.Length \'到结束位置,选取结束
        End If
    Else \'如果找到了
        vars("位置") = idx + i \'找出搜索字符的位置
        txt.SelectionStart = idx + i \'从起始位置选取
        txt.SelectionLength = s1.Length \'到结束位置,选取结束
    End If
End If

--  作者:有点蓝
--  发布时间:2022/9/6 21:46:00
--  
代码最后加上

Dim d = txt.BaseControl
d.ScrollToCaret

--  作者:2425004926
--  发布时间:2022/9/7 0:03:00
--  
 感谢老师!