Richtextbox einzelne Zeilen färben

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Rickstarr.

    Richtextbox einzelne Zeilen färben

    Hallo,

    VB.NET-Quellcode

    1. ZahlVE = vbNewLine & TextBox1.Text & vbNewLine & "=" & My.Settings.ZahlE & vbNewLine
    2. Verlauf.Text = Verlauf.Text & ZahlVE

    Ich programmiere einen Taschenrechner und das was man zuvor gerechnet hat, soll in einer Richtextbox (Verlauf) gezeigt werden.
    Das Ergebnis also im code ("=" & My.settings.ZahlE) soll grün gefärbt werden. Ich habe schon in mehreren Foren gesucht habe aber nie eine passende Lösung gefunden.
    Ich hoffe Ihr könnt mir helfen.
    probierma

    VB.NET-Quellcode

    1. Dim start = verlauf.text.length
    2. verlauf.AppendText(vbNewLine & TextBox1.Text & vbNewLine & "=" & My.Settings.ZahlE & vbNewLine)
    3. verlauf.SelectAll()
    4. verlauf.SelectionBackColor = Color.White
    5. verlauf.Select(start, verlauf.TextLength - start)
    6. verlauf.SelectionBackColor = Color.LightGreen
    Schau dir den Code doch mal an.

    ErfinderDesRades schrieb:

    probierma

    VB.NET-Quellcode

    1. verlauf.Select(start, verlauf.TextLength - start)


    "Start" ist die Länge aller Zeichen, die vorher dort standen. "verlauf.length" ist die Zeichenlänge NACH dem Einfügen der Rechnung.
    In dem Fall würds wahrscheinlich so funktionieren

    VB.NET-Quellcode

    1. verlauf.Select(verlauf.text.lastindexof("="c), verlauf.TextLength - start)


    Probiers mal aus :)

    MFG
    Auf der Suche nach Coding-Kursen auf Lence.at

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „KingTimon“ ()

    @KingTimon und @ErfinderDesRades Danke!

    Ich habe es jetzt so geschrieben : (Naja Ihr haha :D)

    VB.NET-Quellcode

    1. Dim start = Verlauf.Text.Length
    2. Verlauf.Select(Verlauf.Text.LastIndexOf("="c), Verlauf.TextLength + start)
    3. Verlauf.SelectionColor = Color.Green

    Anscheinend war ".., Verlauf.TextLength - start) der Fehler. Wenn ich das mit + mache funktioniert es.
    Ein Problem habe ich aber noch :/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rickstarr“ ()

    frag doch mit einer for each schleife jede zeile nach dem ersten zeichen der zeile ab, such die positionen der zeichen.
    der rest erklärt sich hoffentlich vonselbst. l
    Auf der Suche nach Coding-Kursen auf Lence.at
    Hallo ich nochmal...
    ich habe es versucht mit der For Each schleife, habe mir im Internet Videos angeguckt aber ich kapier das nicht so richtig.
    Ich habe es versucht so zu schreiben:

    VB.NET-Quellcode

    1. ​For Each start In Verlauf.Text.length 'das es falsch ist weiß ich jetzt aber ich weiß nicht warum

    Die Frage wäre nun, ob mir das jemand ganz genau erklären könnte was bei welchem schritt passiert, weil ganz verstehen tue ich das nicht.
    Muss nicht mit dem Code von mir sein, also anhand eines Beispiels wäre mir ebenfalls recht.
    ich versuche es grade zu vermeiden, für jeden einzelnen Frager den persönlichen Coach zu machen.
    Lieber verlinke ich auf geeignete Knowledge-Bases, weil die erklären vlt sogar besser als ich, und v.a. übt das darin, Knowledge-Bases zu nutzen - was ein Grundprinzip der Programmierung ist.

    msdn.microsoft.com/de-de/library/dd409611(v=vs.140).aspx

    Da findest du alle Schlüsselworte dokumentiert, auch for each

    Und merke: Youtube ist als Knowledge-Base vollkommen unbrauchbar. Da produzieren sich nur die OberNoobs, und da lernst du nur, wie mans auf keinen Fall machen sollte.
    Glaub mir, diese traurige Wahrheit hat sich hundertfach bestätigt.

    Rickstarr schrieb:

    SelectionMode
    So was:

    VB.NET-Quellcode

    1. Me.RichTextBox1.SelectionStart = 3 ' Index des 1. zu färbenden Zeichens
    2. Me.RichTextBox1.SelectionLength = 6 ' Anzahl der zu färbenden Zeichens
    3. Me.RichTextBox1.SelectionColor = Color.Red ' die Farbe

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    äh - ich glaub er hat diesen satz nicht verstanden:

    msdn schrieb:

    For Each...Next Statement (Visual Basic)
    Repeats a group of statements for each element in a collection.
    @TE: Der Satz enthält 4 Substantive - Bei welchen davon weißt du nicht, was das ist?
    Davon sind 2 Fachbegriffe: Statement und Collection.

    Ah - Du kannst auch einfach den Google-Übersetzer nehmen: translate.google.de/
    Dabei kommt raus:
    Wiederholt eine Reihe von Anweisungen für jedes Element in einer Sammlung.

    Was an dem Satz verstehst du nicht?
    @ErfinderDesRades
    Den Satz verstehe ich aber ich verstehe nicht wie ich es schreiben soll also was ist mein Element und was ist meine Gruppe?
    ich weiß nur das die For Each schleife da sein soll:

    VB.NET-Quellcode

    1. Dim start = Verlauf.Text.Length
    2. For Each "Element" In "Group"
    3. Verlauf.Select(Verlauf.Text.LastIndexOf("="c), Verlauf.TextLength + start)
    4. Verlauf.SelectionColor = Color.Green
    5. next

    oder?
    lies die deutsche Übersetzung, da steht nix von "Gruppe", sondern da ist "group of Statements" sehr gut übersetzt mit "Reihe von Anweisungen".
    CodeZeilen sind Anweisungen, in deinem Beispiel würde die Schleife die Anweisungen in Zeile#3 und #4 wiederholen.

    Weitere unklare Begriffe?
    "Sammlung" etwa ist nicht optimal übersetzt für unser Fachgebiet. Wir würden besser von "Auflistung" sprechen.

    Also der Satz lautet nun:
    Wiederholt eine Reihe von Anweisungen für jedes Element in einer Auflistung.

    Ach, du kannst mal Grundlagen: Fachbegriffe lesen, da skizziere ich u.a. kurz, was eine Auflistung ist.