RichTextBox做日志显示保留固定行数如何实现?

ltyxmfy 2020-06-15 05:22:38
比如最大固定显示10行日志,当增加到11行时,则自动删除第1行内容,只保留最新的10行日志,要如何实现?
...全文
17979 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltyxmfy 2021-01-21
  • 打赏
  • 举报
回复
唉呀妈,发错版块了,我用的是VB,今天得空来研究了一下,自己解决了。
Private Sub Command1_Click()

RichTextBox1.TextRTF = CutLine(RichTextBox1.TextRTF, 10)

End Sub

Private Function CutLine(Rtf As String, CountValue As Long) As String
Dim Head As String, newRtf As String
Dim strLine() As String
Dim i As Long, MaxLine As Long

strLine = Split(Rtf, "\par ")
MaxLine = UBound(strLine)
If MaxLine <= CountValue Then
CutLine = Rtf
Exit Function
End If
Head = Left(strLine(0), InStr(strLine(0), "\fs18 ") + 5)

newRtf = "\par }"
For i = MaxLine To MaxLine - CountValue - 1 Step -1
newRtf = vbCrLf & "\par " & strLine(i) & newRtf
Next
newRtf = Head & newRtf
CutLine = newRtf
End Function
xiaoid 2020-09-08
  • 打赏
  • 举报
回复
RT控件有lines属性,获取所有行的集合, 删除前面的行,保留后面的行就好了。重新赋值给RT。
Damon.Gao 2020-09-06
  • 打赏
  • 举报
回复
Public Class Form1 Dim LIMITMAXROWCOUNTS As Integer = 10 Dim counts As Integer = 0 Private Sub btnAddEvent_Click(sender As Object, e As EventArgs) Handles btnAddEvent.Click counts += 1 DisplayLogInfo(counts) End Sub Private Function DisplayLogInfo(ByVal info As String) As Integer Dim ret As Integer = 0 Dim lstArrayData As New List(Of String) Try With rbtLog lstArrayData.AddRange(.Text.Split(New Char(), "&", vbLf)) lstArrayData = lstArrayData.Where(Function(s As String) Not String.IsNullOrEmpty(s)).ToList If lstArrayData.Count > LIMITMAXROWCOUNTS Then lstArrayData.Add(info) lstArrayData.RemoveAt(0) .Clear() For i As Integer = 0 To lstArrayData.Count - 1 .AppendText(String.Concat(lstArrayData(i).ToString, vbLf)) Next Else .AppendText(String.Concat(info, vbLf)) End If End With ret = 1 Catch ex As Exception ret = 0 End Try Return ret End Function End Class
ziqi0716 2020-08-22
  • 打赏
  • 举报
回复
在textchaned事件处理函数中:判定日志文本中换行符号数量,如果超过10个,则删除0~第一个换行符的数据.
晨易夕 2020-08-21
  • 打赏
  • 举报
回复
引用 4 楼 ltyxmfy 的回复:
Listbox不支持文本颜色
Listbox本身啥都不支持,但是它里面不是啥都可以放吗? 你把RichTextBox往里面放,满了10个RichTextBox,就Remove掉第一个不就行了。
欧皇神降术 2020-08-21
  • 打赏
  • 举报
回复
那看来你还不对自己改controltemplate
ltyxmfy 2020-08-20
  • 打赏
  • 举报
回复
引用 3 楼 良朋 的回复:
做一个委托事件,用listbox还是很好用的。
Listbox不支持文本颜色
良朋 2020-06-17
  • 打赏
  • 举报
回复
做一个委托事件,用listbox还是很好用的。
良朋 2020-06-17
  • 打赏
  • 举报
回复
用listbox或者listview不好吗?更灵活好用一些。
dmankill 2020-06-16
  • 打赏
  • 举报
回复
TextChanged 方法处理文本 或lines的数组copy https://blog.csdn.net/m1430630520/article/details/99680814

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧