Benutzer mit den meisten Antworten
Text in Richtextbox je nach Inhalt farbig markieren

Frage
-
Hoi FreuNde,
ich lese ein Logbuch und möchte - je nach Inhalt der Zeile - diese andersfarbig anzeigen lassen.
In diesem Beispiel ist es der String "********".
Hier ist mein Code soweit:
Private Sub Logbuch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim FILE_NAME As String = "Log.log" Dim TextLine As String If System.IO.File.Exists(FILE_NAME) = True Then Dim objReader As New System.IO.StreamReader(FILE_NAME) Do While objReader.Peek() <> -1 TextLine = TextLine & objReader.ReadLine() & vbNewLine If TextLine.ToString.Contains("********") Then ForeColor = Color.Blue End If Loop RichTextBox1.Text = TextLine Else MsgBox("Log.log nicht gefunden") End If End Sub
Was muss ich da wohl anderes bzw. richtig machen ?
Gruss
Trixi
Be a good forum member - mark posts that contain the answers to your questions or those that are helpful
Antworten
-
Hallo,
ich lese ein Logbuch und möchte - je nach Inhalt der Zeile - _
diese andersfarbig anzeigen lassen.
In diesem Beispiel ist es der String "********".Hier mal ein kleines Beispiel, bei dem in einer RichtextBox
jeweils die Zeile rot dargestellt wird, die einen bestimmten,
zufällig generierten Wochentagsnamen (Montag ... Sonntag)
enthält.Kopiere den nachfolgenden Code einfach in ein leeres
Formmodul Form1.vb' / / / Beginn Code Form1.vb
Public Class Form1
Private WithEvents RTB As RichTextBox
Private WithEvents Btn As Button
Private mCntr As IntegerPrivate Sub Form1_Load _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Load' Richtextbox erstellen
RTB = New RichTextBox
With RTB
.Name = "RTB"
.Font = New Font("Arial", 12)
.Multiline = True.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 70).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.BottomEnd With
Me.Controls.Add(RTB)' Button erstellen
Btn = New Button
With Btn
.Name = "Btn".SetBounds _
(10, RTB.Bottom + 10, _
90, 40).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Bottom.Font = New Font("Arial", 10)
.Text = "click me"
End With
Me.Controls.Add(Btn)' Richtextbox mit Text füllen
Dim i As Integer
For i = 1 To 7RTB.Text &= _
"Heute ist " & _
WeekdayName(i) & _
ControlChars.CrLf
Next
End SubPrivate Sub Btn_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Btn.Click' Zufälligen Wochentagsname erzeugen
Dim WN As String
Dim Cntr As Integer
Dim Rnd As New Random(Now.Millisecond)
Do
Cntr = Rnd.Next(1, 8)
Loop While Cntr = mCntr
mCntr = Cntr
WN = WeekdayName(mCntr)Me.Text = "Find: " & WN
' Text der RTB zeilenweise in String-Array rtbLines übertragen
Dim rtbLines() As String = RTB.Lines
Dim i As Integer' evtl. vorherige Markierungen löschen
RTB.SelectionColor = RTB.ForeColorFor i = 0 To rtbLines.GetUpperBound(0)
' Prüfen, ob die Zeile den gesuchten Wochentagsnamen enthält
If rtbLines(i).Contains(WN) Then' Beginn der Markierung: erstes Zeichen der Zeile
RTB.SelectionStart = RTB.GetFirstCharIndexFromLine(i)' Länge der Markierung: Anzahl Zeichen der Zeile
RTB.SelectionLength = rtbLines(i).Length' Den durch .SelectionStart und .SelectionLength
' definierten Textteil rot einfärben.
RTB.SelectionColor = Color.RedEnd If
Next
End Sub
End Class
' \ \ \ E N T ENach dem Programmstart siehst Du die Form1 mit
einer Richtextbox, gefüllt mit Text. Jede Zeile der
RTB enthält einen Wochentagsnamen.
Mit einem Mausklick auf den Button wird ein zufälliger
Wochentagsname generiert und nach diesem
Wochentagsnamen in der Richtextbox gesucht.
Die Zeile, welche den gesuchten Wochentagsnamen
enthält wird in Rot dargestellt.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort vorgeschlagen Stefan FalzModerator Samstag, 15. Januar 2011 15:31
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:26
Alle Antworten
-
Hi,
http://social.msdn.microsoft.com/Forums/de-DE/visualcsharpde/thread/a198801f-d8c7-4364-bc23-6f84eba027db behandelt eigentlich genau die gleiche Frage.
Im letzten Eintrag steht, wie man den aktuell selektierten Inhalt einfärbt, die Selektion muss natürlich vorher erfolgen :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hoi Stefan,
ist C
Gruss
Trixi
Be a good forum member - mark posts that contain the answers to your questions or those that are helpful- Als Antwort markiert Trixi-N Freitag, 14. Januar 2011 23:09
- Tag als Antwort aufgehoben Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:26
-
Hi,
ist C
Und?
http://converter.telerik.com/http://www.developerfusion.com/tools/convert/csharp-to-vb/
... (ganz viele andere :)
Das bißchen Code lässt sich doch einfach damit übersetzen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Morschen,
danke sie gut getan mit vorschlag dieses.
Glück auf wir kennen Qunatität von Programm zerfleischer jenige.
Probiert? Scheint nicht so. Es gibt viele gute Codekonverter für .NET. Und selbst wenn mal eine einzelne Zeile nicht ganz passen sollte ... ein wenig Eigeninitiative kann man doch auch zeigen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo,
ich lese ein Logbuch und möchte - je nach Inhalt der Zeile - _
diese andersfarbig anzeigen lassen.
In diesem Beispiel ist es der String "********".Hier mal ein kleines Beispiel, bei dem in einer RichtextBox
jeweils die Zeile rot dargestellt wird, die einen bestimmten,
zufällig generierten Wochentagsnamen (Montag ... Sonntag)
enthält.Kopiere den nachfolgenden Code einfach in ein leeres
Formmodul Form1.vb' / / / Beginn Code Form1.vb
Public Class Form1
Private WithEvents RTB As RichTextBox
Private WithEvents Btn As Button
Private mCntr As IntegerPrivate Sub Form1_Load _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Me.Load' Richtextbox erstellen
RTB = New RichTextBox
With RTB
.Name = "RTB"
.Font = New Font("Arial", 12)
.Multiline = True.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 70).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.BottomEnd With
Me.Controls.Add(RTB)' Button erstellen
Btn = New Button
With Btn
.Name = "Btn".SetBounds _
(10, RTB.Bottom + 10, _
90, 40).Anchor = _
AnchorStyles.Left Or _
AnchorStyles.Bottom.Font = New Font("Arial", 10)
.Text = "click me"
End With
Me.Controls.Add(Btn)' Richtextbox mit Text füllen
Dim i As Integer
For i = 1 To 7RTB.Text &= _
"Heute ist " & _
WeekdayName(i) & _
ControlChars.CrLf
Next
End SubPrivate Sub Btn_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles Btn.Click' Zufälligen Wochentagsname erzeugen
Dim WN As String
Dim Cntr As Integer
Dim Rnd As New Random(Now.Millisecond)
Do
Cntr = Rnd.Next(1, 8)
Loop While Cntr = mCntr
mCntr = Cntr
WN = WeekdayName(mCntr)Me.Text = "Find: " & WN
' Text der RTB zeilenweise in String-Array rtbLines übertragen
Dim rtbLines() As String = RTB.Lines
Dim i As Integer' evtl. vorherige Markierungen löschen
RTB.SelectionColor = RTB.ForeColorFor i = 0 To rtbLines.GetUpperBound(0)
' Prüfen, ob die Zeile den gesuchten Wochentagsnamen enthält
If rtbLines(i).Contains(WN) Then' Beginn der Markierung: erstes Zeichen der Zeile
RTB.SelectionStart = RTB.GetFirstCharIndexFromLine(i)' Länge der Markierung: Anzahl Zeichen der Zeile
RTB.SelectionLength = rtbLines(i).Length' Den durch .SelectionStart und .SelectionLength
' definierten Textteil rot einfärben.
RTB.SelectionColor = Color.RedEnd If
Next
End Sub
End Class
' \ \ \ E N T ENach dem Programmstart siehst Du die Form1 mit
einer Richtextbox, gefüllt mit Text. Jede Zeile der
RTB enthält einen Wochentagsnamen.
Mit einem Mausklick auf den Button wird ein zufälliger
Wochentagsname generiert und nach diesem
Wochentagsnamen in der Richtextbox gesucht.
Die Zeile, welche den gesuchten Wochentagsnamen
enthält wird in Rot dargestellt.Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)- Als Antwort vorgeschlagen Stefan FalzModerator Samstag, 15. Januar 2011 15:31
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 19. Januar 2011 12:26