Foxtable(狐表)用户栏目专家坐堂 → [求助]文本框中查找值显示问题


  共有6727人关注过本帖树形打印复制链接

主题:[求助]文本框中查找值显示问题

帅哥哟,离线,有人找我吗?
2425004926
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
[求助]文本框中查找值显示问题  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/6 21:46:00 [只看该作者]

代码最后加上

Dim d = txt.BaseControl
d.ScrollToCaret

 回到顶部
帅哥哟,离线,有人找我吗?
2425004926
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:712 积分:5559 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2022/9/7 0:03:00 [只看该作者]

 感谢老师!

 回到顶部