Richtextbox von @ bis ; markieren

  • Allgemein

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Gather.

    Richtextbox von @ bis ; markieren

    Hallo Leute,
    ich hätte erneut eine rasche Frage, undzwar wie mache ich es am schnellste, dass meine Richtextbox alles nach einem @ bis zu einem Semikolon (;) farbin markiert.
    Wichtig ist, dies kommt nicht nur einmal vor. @Test;@bla;@blabla;
    Ich möchte nur den Text farbig markieren.

    Habt ihr da eine gute Idee?
    Danke im Vorraus.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    So:

    C-Quellcode

    1. int firstIndex = richTextBox1.Text.IndexOf('@');
    2. int secondIndex = richTextBox1.Text.IndexOf(';', firstIndex);
    3. while (firstIndex >= 0 && secondIndex >= 0);
    4. {
    5. //Textstelle markieren
    6. firstIndex = richTextBox1.Text.IndexOf('@', secondIndex);
    7. secondIndex = richTextBox1.Text.IndexOf(';', firstIndex);
    8. }

    Ich trau dir mal zu, dass du das Markieren selbst hinbekommst. ;)
    Erstmal danke.
    Interessant dabei ist dennoch, dass ich mit folgendem Code, folgenden Fehler bekomme:

    VB.NET-Quellcode

    1. Dim firstIndex As Integer = rtbModstring.Text.IndexOf("@"c)
    2. Dim secondIndex As Integer = rtbModstring.Text.IndexOf(";"c, firstIndex)
    3. rtbModstring.SelectionStart = firstIndex
    4. rtbModstring.SelectionLength = secondIndex - firstIndex
    5. rtbModstring.SelectionColor = Color.Red
    6. While firstIndex >= 0 AndAlso secondIndex >= 0
    7. 'Textstelle markieren
    8. firstIndex = rtbModstring.Text.IndexOf("@"c, secondIndex)
    9. secondIndex = rtbModstring.Text.IndexOf(";"c, firstIndex)
    10. rtbModstring.SelectionStart = firstIndex
    11. rtbModstring.SelectionLength = secondIndex - firstIndex
    12. rtbModstring.SelectionColor = Color.Red
    13. End While




    Wobei firstIndex bei diesem Fehler -1 entspricht, und secondIndex 113.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Tschuldigung, hatte ich nicht bedacht.

    VB.NET-Quellcode

    1. Dim firstIndex As Integer = rtbModstring.Text.IndexOf("@"c)
    2. Dim secondIndex As Integer = rtbModstring.Text.IndexOf(";"c, firstIndex)
    3. While firstIndex >= 0
    4. rtbModstring.SelectionStart = firstIndex
    5. rtbModstring.SelectionLength = secondIndex - firstIndex
    6. rtbModstring.SelectionColor = Color.Red
    7. firstIndex = rtbModstring.Text.IndexOf("@"c, secondIndex)
    8. secondIndex = If(firstIndex >= 0, rtbModstring.Text.IndexOf(";"c, firstIndex), -1);
    9. End While

    Diese Abfrage musst du dann auch oben machen, sofern nicht sichergestellt ist, dass mindestens ein @ im Text vorkommt.

    Artentus schrieb:

    Tschuldigung, hatte ich nicht bedacht.
    @Gather:: Auch secondIndex kann initial -1 sein, also musst Du da noch ein entsprechendes If drum herum bauen.
    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!
    @RodFromGermany
    Schon getan, funktioniert alles Prima.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!