C# - Rich Text Box mit Zeilennummerierung

HuRaHoRRe

Erfahrenes Mitglied
Hi

Ich versuche mich seit einigen Tagen an einem kleinen HTML Editor, nun wollte ich das dieser auch Zeilennummerierung bekommt.

Dazu habe ich zwei Rich Text Boxen nebeneinander platziert.

Leider sind meine Versuche bisher gescheitert, manchmal wird eine Zeile zu viel oder zu wenig angezeigt. Wenn ich Zeilen auswähle und sie dann lösche löscht es die Zeilennummerierung auch erst beim zweiten mal.

Ich denke mein Versuch ist auch nicht wirklich optimal, wäre super wenn jemand eine bessere Lösung hätte.

Java:
 private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                generateTextLineContext(richTextBox1.Lines.Length);
            }

            if (e.KeyCode == Keys.Back)
            {
                generateTextLineContext(richTextBox1.Lines.Length);
            }
        }

        private void generateTextLineContext(int lineNumber)
        {
            richTextBox2.ResetText();
            for (int i = 1; i <= lineNumber; i++)
            {
                richTextBox2.Text += i.ToString() + System.Environment.NewLine;
            }  
        }

Vielen Dank
 
Hallo,

eine RichTextBox hat die Eigenschaft Lines.
In dieser Variable ist in je einem Array-Element eine Zeile der RichTextBox, also kannst du mit
Code:
richTextBox1.Lines.Length
die Anzahl der Zeilen herausfinden!
Und das dann einfach in das KeyDown-Event ohne zu überprüfen, welche Taste gedrückt wurde, denn man kann z.B. auch mit Strg+X Text ausschneiden und dann sind es auch weniger Zeilen als vorher ;)

Edit: Da fällt mir gerade auf, dass man ja auch über das Kontext-Menü Text ausschneiden kann..
Also das ganze was oben steht in das TextChanged-Event, dann sollte es richtig gehen ;)

MfG
Fabsch
 
Hi,

an deiner Stelle würde ich mal nach einem Control suchen, das schon für die Eingabe von Sourcecodes gemacht ist. Da gibt es sicher einige.

Wenn du es aber selbst machen willst, würde ich dir empfehlen, nicht zwei RTF-Boxen nebeneinander zu setzen, sondern das Control abzuleiten und einen Marginbereich mit Zeilennummern selbst zu zeichnen.

Grüße, D.
 
Zurück