如何编程控制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“其中内容”提取出来,要怎么实现?
(#@等符号代表任意长度不一的字符串)
代码如下,你先把查找的内容赋值于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的滚动条进行自由滚动?的主要内容,如果未能解决你的问题,请参考以下文章