如何编程控制vb2005的richtextbox的滚动条进行自由滚动?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编程控制vb2005的richtextbox的滚动条进行自由滚动?相关的知识,希望对你有一定的参考价值。

如何编程控制vb2005的richtextbox的滚动条进行上下的自由滚动?
不要API的方法。注意是2005,请别乱抄或贴vb的代码。
是winform程序,
由于使用了TextBoxBase.AppendText,
TextBoxBase.ScrollToCaret方法会造成插入点上下移动,这办法并不好用!
-----------------
回一楼兄弟:因为跨平台测试过API有问题。
----------------
先感谢二楼兄弟的勤力支持。
怪我自己没说清楚,
不想使用ScrollToCaret方法是因为我的这个richtextbox不接受光标,
同时文本也是染色了的,各种颜色和字体穿插着(附图片),
底部不停有委托在Appendtext。
目标也不是想通过输入行号来控制插入点来卷动,
而是想通过按pageup、pagedown等按钮来控制滚动条上下翻滚(类似鼠标点击滚动条)。
ScrollToCaret实在要干扰到底部的AppendText的染色,
也会导致滚动条上下跳动,一下跳到你想举动到的比如第100行,一下因为AppendText又跳到底部。
文本内容也很大,经常达到几万行,
再等等看有没有更好的办法。。。

根据你的要求,已经测试过了。附上截图。下面是程序代码。

欢迎交流。

‘-------------------------------------------------------

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        test()

    End Sub

    Private Sub test()

        Dim line As Integer

        Try

            line = CInt(TextBox1.Text)

        Catch ex As Exception

            Exit Sub

        End Try

        Me.SetScrollValue(line)

    End Sub

    Private Sub SetScrollValue(ByVal line As Integer)

        Dim max As Integer = Me.RichTextBox1.Lines.Length

        If checkValue(line, max) = False Then

            Exit Sub

        End If

        '若要保留原先的光标位置,则将注释取消即可

        'Dim oldpostion As Integer = Me.RichTextBox1.SelectionStart

        Me.RichTextBox1.SelectionStart = Me.RichTextBox1.GetFirstCharIndexFromLine(line)

        Me.RichTextBox1.ScrollToCaret()

        'Me.RichTextBox1.SelectionStart = oldpostion

    End Sub

    Private Function checkValue(ByVal line As Integer, ByVal max As Integer) As Boolean

        Return line > 0 AndAlso line <= max

    End Function

End Class

参考技术A 建议先查询一下richtextbox的所有属性和方法。不过要想得到好的效果一般都是API了。.net函数库最后还是会调用API的。

VB编程,查找TXT中特定的字符串

如某txt中有:a"&&&&&",b"#####",a"@@",c"!!!",a"%%%"
我想实现从这个txt中把含有a“其中内容”提取出来,要怎么实现?
(#@等符号代表任意长度不一的字符串)

参考技术A 方法一:用richtextbox的查找方法
代码如下,你先把查找的内容赋值于FindTxt变量
RichTextBox1.Find (FindTxt)
If RichTextBox1.Find(FindTxt) = -1 Then
MsgBox "没有找到相关的字符!", 48, "查找"
End If
这样找到之后自动选中文字

方法二:用字符串操作,自定义一个函数追问

那a""里面的字符怎么查找出来?

参考资料:http://zhidao.baidu.com/question/84502762.html

参考技术B '未作错误处理,假设你的文件存在且格式正确
Private Sub Command1_Click()
Dim mark, arr, i, out(), n
mark = "a"""
Open "c:\a.txt" For Input As #1
arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), mark)
Close #1
For i = 0 To UBound(arr)
If InStr(arr(i), """") > 1 Then
n = n + 1
ReDim Preserve out(1 To n)
out(n) = Split(arr(i), """")(0)
End If
Next
MsgBox Join(out, vbNewLine) '这里是输出结果,你可以写入文件
End Sub本回答被提问者采纳
参考技术C 复制。粘贴

以上是关于如何编程控制vb2005的richtextbox的滚动条进行自由滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何将颜色格式应用于 Richtextbox *作为用户类型*(VB.Net)

VB里的 RichTextBox 滚动条

vb2005 是啥东西

VB中如何使RICHTEXTBOX透明

vb文本编辑器RichTextBox文本属性设置问题

VB 如何把richtextbox中已经选中的部分文字,加粗、左对齐、居中、右对齐。不胜感激!!!