2012-02-20 89 views
0

我有一个程序,它在安装软件时写入.log文件。 某些行将包含WARNING或FAILED。在VB.net中突出显示的实时文本阅读器

我想要的是我的程序中的一个窗口,该窗口将读取.log文件并将其内容显示到该窗口中。任何包含WARNING或FAILED的行都会突出显示为黄色/红色。

有谁知道如何做到这一点?

回答

1

创建一个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 
+0

你没有处理你的对象。 – LarsTech 2012-02-21 15:36:06

+0

应抛弃哪个对象?我能想到的唯一一个将是Graphics对象,但我不创建它,只是使用它! – Martin 2012-02-22 19:37:17

+0

基本上,任何实现* IDispose *:刷子和字体,甚至是StringFormat。一个'使用(...){}'块只能用于一次性物体,所以它会在块的末尾为你处理,并且是确保你的物体自己清理完的好方法。在你的例子中,你不会处理Graphic对象,因为你是对的,你没有创建它。 – LarsTech 2012-02-22 19:44:35