Visual Basic - Text verändern
lima-city → Forum → Programmiersprachen → Basic
beispiel
bestimmten stellen
code
cursor
ende
folgenden code
formulieren
frage
normalen textfeld
problem
rot schreiben
schwarz darstellen
sender
spiegelverkehrt netter effekt
system
test
text
texteingabe
textfeld
versucht code
-
Also ich hab ein mehrzeiliges Textfeld und jedesmal wenn in diesem Textfeld
zb.: test vorkommt soll er test rot schreiben aber den restlichen Text normal in schwarz darstellen.
Ist soetwas möglich? Wenn ja wie realisiere ich das? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
In einem normalen Textfeld kannst du ohne kompliziertere Änderungen die Schriftfarbe einzelner Wörter nicht ändern. Um das möglichst einfach zu lösen, solltest du eine RichtextBox verwenden, dort können Formatierungen vorgenommen werden, auch einzeln.
Du suchst also dann in der RichtextBox nach dem Wort und ersetzt es durch das gleiche Wort mit entsprechenden Formatierungstags, am besten über .Replace() -
so ich hab das jetzt so versucht:
Private Sub txt_code_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_code.TextChanged txt_code.Text = Replace(txt_code.Text, "test", "keiner") End Sub
und wenn ich jetzt etwas eingebe schreibt er es spiegelverkehrt (netter effekt aber leider nicht erwünscht)
was hab ich daran falsch gemacht? -
Dass du nun "spiegelverkehrt" schreibst, ist völlig klar. Denn du weist dem Textfeld einen neuen Text zu, somit wird der Textcursor wieder an den Anfang des Textes gesetzt nach jedem Tippen. Also musst du in der Funktion den Textcursor wieder an das Ende der Textbox setzen.
Beispiel:Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged Me.RichTextBox1.Text = Me.RichTextBox1.Text.Replace("test", "leer") Me.RichTextBox1.Select(Me.RichTextBox1.Text.Length, 0) End Sub
-
aso ja jetzt ist mir alles klar =) dankeschön =)
noch eine frage: wenn das jetzt eingen ganzen text betrifft der zwischen () oder "" steht wie mach ich das dann? oder ist das dann zu umständlich? -
Also du meinst z.B. Text ersetzen, der in einer Klammer steht? Das ist auch kein Problem dank regulären Ausdrücken:
Me.RichTextBox1.Text = System.Text.RegularExpressions.Regex.Replace(Me.RichTextBox1.Text, "\([^\)]*\)", "leer") Me.RichTextBox1.Select(Me.RichTextBox1.Text.Length, 0)
In diesem Beispiel wird der Text zwischen zwei Klammern (...) ersetzt durch "leer". Allerdings ist es etwas schwieriger, die regulären Ausdrücke zu formulieren -
Ahh ja genau das meinte ich =) Dankeschön, funktioniert wie immer. :)
Ich frag gleich noch was!
Also ich hab einen Button der fügt einen text in die Richtextbox, mit folgenden Code, ein:
Private Sub txt_ban_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_ban.Click txt_code.Text = txt_code.Text & "ON *:BAN:*:#: {" & vbNewLine & vbNewLine & "}" & vbNewLine End Sub
Das funktioniert auch nur das Problem ist das es immer am ende eingefügt wird (auch ganz klar) und nicht dort wo der Cursor für die Texteingabe steht. Sollte doch eig möglich sein das er das dort einfügt oder? Wenn ja dann die große frage wie nur? -
Über die Methode .Insert(startIndex As Integer, value As String) kannst du bei Text-Objekten an bestimmten Stellen beliebigen Text einfügen. Die Cursor-Position bei Text- oder Richtextboxen im Text kannst du über .SelectionStart abfragen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage