Farbe von String ändern
Hallo,
beschäftige mich gerade damit VB Express zu erlernen.
Problem:
Ich habe Daten in einem String, die ich auf Fehler überprüfe.
Wenn ich per If dann zu so einem Fehler gekommen bin, soll das Zeichen, dann durch ein "#" ersetzt wird und dass soll dann auch Rot erscheinen.
Das heißt, ich will eine sonst schwarze Zeichenkette mit roten "#" spicken, wenn dort Fehler drin sind.
Die Variable die noch andere Zeichen enthält wird immer durch += erweitert.
Zuletzt wird dass dann in einer RTB angezeigt.
Ist das Möglich?
Ach ja, ich will nicht die Farbe in einer TextBox oder so ändern!
Die Fehelrroutine befindet sich in einem Public Modul welches ich von einer Form aus aufrufe.
Hoffe ihr könnt mir helfen.
(Ist ein Programm für Genetik)
beschäftige mich gerade damit VB Express zu erlernen.
Problem:
Ich habe Daten in einem String, die ich auf Fehler überprüfe.
Wenn ich per If dann zu so einem Fehler gekommen bin, soll das Zeichen, dann durch ein "#" ersetzt wird und dass soll dann auch Rot erscheinen.
Das heißt, ich will eine sonst schwarze Zeichenkette mit roten "#" spicken, wenn dort Fehler drin sind.
Die Variable die noch andere Zeichen enthält wird immer durch += erweitert.
Zuletzt wird dass dann in einer RTB angezeigt.
Ist das Möglich?
Ach ja, ich will nicht die Farbe in einer TextBox oder so ändern!
Die Fehelrroutine befindet sich in einem Public Modul welches ich von einer Form aus aufrufe.
Hoffe ihr könnt mir helfen.
(Ist ein Programm für Genetik)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86878
Url: https://administrator.de/contentid/86878
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
10 Kommentare
Neuester Kommentar
Verstehe ich das richtig das du einen Text in einer Variabeln vom Typ String einfärben willst? Das geh so nicht. Du könntest entweder eindeutige Markierungen an den stellen setzen. Wenn das # z.B. nicht sonst in dem Text vorkommt dan kans tdu das ja einsetzen. Diese Variable kanst du ja weiterhin mit + dann erweitern wie du möchtest. Bei der ausgabe must du dan einen Filer drüber laufen lassen der dier die ganzten # dann halt rot einfärbt.
Den Filter müßtest du halt selbst schreiben.
Wenn du den String in die RTB schreibst mußt du danach einfach den Text nochmal durchlaufen, und die # markieren (geht über RTB.SelectedRtf). Danach kannst du dieses Zeichen einfärben mit
Im Prinzip halt die Teile des Textes in der RTB markieren und dann die Farbe wie beschrieben ändern.
Wenn du den String in die RTB schreibst mußt du danach einfach den Text nochmal durchlaufen, und die # markieren (geht über RTB.SelectedRtf). Danach kannst du dieses Zeichen einfärben mit
RTB.SelectionColor = Color.Red
Genaueres zum .SelectedRtf must du in der Hilfe nachschauen weil ichd as auch nur einmal gebraucht habe bisher und ich hier grade nicht nachschauen kann.Im Prinzip halt die Teile des Textes in der RTB markieren und dann die Farbe wie beschrieben ändern.
So sollte es gehen:
Er geht den ganzen String durch, sucht nach den "#", färbt dieses Zeichen ein und sucht dann weiter. Solange bis der String einmal durchsucht wurde.
RichTextBox1.Text = F_Output_DNA
pos = 0
Do
pos = RichTextBox1.Find("#", pos + 1, RichTextBoxFinds.MatchCase)
RichTextBox1.SelectionColor = Color.Red
MsgBox(pos)
Loop While pos > 0
Das ganze war als Teil des Codes gedacht. Drum fehlt das dim pos.
Das ganze funktioniert nicht ganz so. Es wird nicht jedes einzelne Zeichen durchgegangen und verglichen, sondern:
Danach wird eben für dieses zeichen die Farbe verändert.
Danach wird ab dieser Position weiter gesucht wo das nächste mal ein # steht. Das ganze läuft so lange bis eben einmal der Ganze String in der RichTextBox1 durchsucht wurde. Dann liefert das find als position eine -1 zurück und die Schleife bricht ab.
Das MsgBox kannst du natürlich rausnehmen. Das war nur zur Anschauung drin. Es sollte dir die Position anzeigen ander sich jeweils die # befinden.
Das MatchCase brauchst du eigentlich garnicht umbedingt. Dieser Parameter ist optional. Allerdings gibt es mehrere Überladungen von Fin und daher kanns sein das die Falsche ausgewählt wird ohne diesen Parameter.
Das ganze funktioniert nicht ganz so. Es wird nicht jedes einzelne Zeichen durchgegangen und verglichen, sondern:
pos = RichTextBox1.Find("#", pos + 1, RichTextBoxFinds.MatchCase)
Es wird die erste Position, nach pos+1, gesucht ander ein # steht. Diese Position wird wieder in pos gespeichert. Außerdem gilt dieses Zeichen dann als Selection.Danach wird eben für dieses zeichen die Farbe verändert.
Danach wird ab dieser Position weiter gesucht wo das nächste mal ein # steht. Das ganze läuft so lange bis eben einmal der Ganze String in der RichTextBox1 durchsucht wurde. Dann liefert das find als position eine -1 zurück und die Schleife bricht ab.
Das MsgBox kannst du natürlich rausnehmen. Das war nur zur Anschauung drin. Es sollte dir die Position anzeigen ander sich jeweils die # befinden.
Das MatchCase brauchst du eigentlich garnicht umbedingt. Dieser Parameter ist optional. Allerdings gibt es mehrere Überladungen von Fin und daher kanns sein das die Falsche ausgewählt wird ohne diesen Parameter.