RichTextBox Maximale Zeilenanzahl

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    RichTextBox Maximale Zeilenanzahl

    Hey ich würde gerne die Zeilenanzahl einer Richtextbox begrenzen.

    Die box wird voll geladen mit text aber nicht alles des textes ist relevant ich würde gerne einfach einen teil abschneiden.

    Mit der splitfunktion geht das leider nicht da der text sich ständig ändert also bleibt mir nur die möglichket die zeilenanzahl zu begrenzen gibt es dafür irgend eine möglichkeit ?
    Du kannst mit dem TextChanged-Event und Split arbeiten oder mit dem KeyDown-Event. Wenn eine bestimmte Zeilenanzahl überschritten wurde splittest du oder, bei letzterem, machst du e.SuppressKeyPress = False.

    mfG Frank

    bigbase schrieb:

    die Zeilenanzahl
    Meinst Du damit, wie oft im Text ein Zeilenumbruch vorkommt (RTB.Lines.Length)
    oder
    meinst Du die Anzahl der mit Umbrüchen dargestellten Zeilen?
    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!

    VB.NET-Quellcode

    1. Dim RTBLines As String() = RichTextBox1.Lines
    2. Array.Resize(RTBLines, DeineGewünschteZeilenanzahl)
    3. RichTextBox1.Lines = RTBLines


    zu DeineGewünschteZeilenanzahl ggf. noch Zeilen dazurechnen, die Sonderumbrüche gehören (z.B. eigene Steuerzeichen oder Zeilen, die die Maximalzeilenlänge überschreiten, ...)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    RodFromGermany schrieb:


    meinst Du die Anzahl der mit Umbrüchen dargestellten Zeilen?


    Tschuldige wenn ich mich nicht richtig ausgedrückt habe.
    Also ich meine algemeine Zeilen beispiel.

    Ich bin der Text in zeile 1
    Ich bin der Text in zeile 2
    Ich bin der Text in zeile 3
    Ich bin der Text in zeile 4 ich bin ein längerer text ich
    überschreite sogar die nächste zeile.
    Ich bin der Text in zeile 5
    Ich bin der Text in zeile 6
    Ich bin der Text in zeile 7



    So ich brauche beispielweise nur die Textzeilen 1-5 der rest soll nicht sichtbar und gelöscht werden


    VaporiZed schrieb:


    ""



    Danke aber dieser Code führt nur dazu das "Die gewünschte Zeilen anzahl nach der ersten zeile mit enter Aufgefüllt wird es schneided nichts ab.



    Nun noch dazu woher der Text kommt er wird durch einen regex von einer Internetseite in diese RichtTextBox Gelesen

    bigbase schrieb:

    es schneided nichts ab.
    Dann musst Du halt den Code von @VaporiZed modifizieren. Eine mögliche Methode:

    VB.NET-Quellcode

    1. Dim RTBLines As List(Of String) = RichTextBox1.Lines.ToList()
    2. For i = DeineGewünschteZeilenanzahl To RichTextBox1.Lines.Length
    3. RTBLines.RemoveAt(i)
    4. Next
    5. RichTextBox1.Lines = RTBLines.ToArray()
    ======
    Wenn Du RegEx verwendest, solltest Du damit auch gleich den Text beschneiden können.
    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 schrieb:


    Dann musst Du halt den Code von @VaporiZed modifizieren.


    Entweder ich bin blöd oder diese lösung funktioniert nicht das ganze führt zu einem laufzeitfehler

    Vieleicht sollte ich den code posten der die Box füllt

    VB.NET-Quellcode

    1. For u = 0 To stringlist.Count - 1
    2. RichTextBox2.AppendText(stringlist.Item(u) & vbCrLf)


    Wenn ich mich zu blöd anstelle tut es mir leid

    bigbase schrieb:

    VB.NET-Quellcode

    1. For u = 0 To stringlist.Count - 1
    Machst Du

    VB.NET-Quellcode

    1. For u = 0 To Math.Min(DeineGewünschteZeilenanzahl, stringlist.Count) - 1
    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!