0
我有一个程序,它在安装软件时写入.log文件。 某些行将包含WARNING或FAILED。在VB.net中突出显示的实时文本阅读器
我想要的是我的程序中的一个窗口,该窗口将读取.log文件并将其内容显示到该窗口中。任何包含WARNING或FAILED的行都会突出显示为黄色/红色。
有谁知道如何做到这一点?
我有一个程序,它在安装软件时写入.log文件。 某些行将包含WARNING或FAILED。在VB.net中突出显示的实时文本阅读器
我想要的是我的程序中的一个窗口,该窗口将读取.log文件并将其内容显示到该窗口中。任何包含WARNING或FAILED的行都会突出显示为黄色/红色。
有谁知道如何做到这一点?
创建一个FORM(我使用VB 2010)并添加此代码。 它将以2种颜色在窗体上书写3行。 它可能会让你在路上。询问MSDN对每个新功能的帮助。
Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim chRs(0) As CharacterRange
Dim sbRs(0) As SolidBrush
Dim flRs(0) As SolidBrush
Dim blueBrush As New SolidBrush(Color.Blue)
Dim whiteBrush As New SolidBrush(Color.White)
Dim redBrush As New SolidBrush(Color.Red)
Dim EditFont As New Font("Courier New", 9)
Dim stringFormat As New StringFormat
Dim aRectangle As Rectangle
Dim RectHeight As Integer = 20
For i = 1 To 3
Dim txt As String = "a string " & CStr(i)
If i = 2 Then
sbRs(0) = blueBrush
Else
sbRs(0) = redBrush
End If
flRs(0) = whiteBrush
chRs(0) = New CharacterRange(0, txt.Length())
Dim chRsa As Array = Array.CreateInstance(GetType(CharacterRange), 1)
Array.Copy(chRs, 0, chRsa, 0, 1)
aRectangle = New Rectangle(0, CInt((i - 1) * RectHeight), ClientRectangle.Size.Width, RectHeight) ' x, y, w, h
stringFormat.SetMeasurableCharacterRanges(chRsa)
Dim stringRegions As Array = Array.CreateInstance(GetType([Region]), 1)
stringRegions = e.Graphics.MeasureCharacterRanges(txt, EditFont, aRectangle, stringFormat)
Dim measureRect1 As RectangleF = stringRegions(0).GetBounds(e.Graphics)
Dim g As Graphics = e.Graphics
g.FillRectangle(flRs(0), measureRect1)
g.DrawString(txt.Substring(chRs(0).First, chRs(0).Length), EditFont, sbRs(0), CSng(measureRect1.X), CSng(measureRect1.Y))
Next
End Sub
你没有处理你的对象。 – LarsTech 2012-02-21 15:36:06
应抛弃哪个对象?我能想到的唯一一个将是Graphics对象,但我不创建它,只是使用它! – Martin 2012-02-22 19:37:17
基本上,任何实现* IDispose *:刷子和字体,甚至是StringFormat。一个'使用(...){}'块只能用于一次性物体,所以它会在块的末尾为你处理,并且是确保你的物体自己清理完的好方法。在你的例子中,你不会处理Graphic对象,因为你是对的,你没有创建它。 – LarsTech 2012-02-22 19:44:35