Laden...

TextBox: Maximalen Speicher / Zeilenzahl begrenzen

Erstellt von Thomas123 vor 14 Jahren Letzter Beitrag vor 14 Jahren 6.830 Views
T
Thomas123 Themenstarter:in
25 Beiträge seit 2008
vor 14 Jahren
TextBox: Maximalen Speicher / Zeilenzahl begrenzen

Hallo,
ich habe auf meiner Oberfläche eine System.Windows.Forms.TextBox platziert.
Diese habe ich als Multiline mit Scrollbalken projektiert, und nutze diese zur Ausgabe von Debug-Informationen mittels AppendText(...).

Nun nimmt das Programm bei vielen Ausgaben immer mehr Speicher in Anspruch.
Kann ich bei der Textbox irgendwie den maximalen Speicherplatz / maximale Anzahl Zeichen oder Zeilen einstellen?
Oder muss ich das selber programmieren, dass z.B. ab 100 Zeilen die zu erst eingetragene Zeile gelöscht wird?

Danke und Gruß
Thomas

3.170 Beiträge seit 2006
vor 14 Jahren

Hallo

Oder muss ich das selber programmieren, dass z.B. ab 100 Zeilen die zu erst eingetragene Zeile gelöscht wird?

Ich denke schon - sowas ähnliches wurde hier im Forum schon öfters besprochen im Zusammenhang wie man eine Art Konsolenausgabe auf einem Form einbetten kann. Etwas fertiges scheint es dafür nicht zu geben.
Ich kann mir auch vorstellen, daß Du bei Codeproject fündig wirst.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

C
63 Beiträge seit 2010
vor 14 Jahren

nja aber lässt sich doch halbwegs schnell etwa so realisieren oder?

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Lines.Length > 5)
            {
                int selectionstart = textBox1.SelectionStart;
                int firstlinelength = textBox1.Lines[0].Length;
// Textlänge der ersten Zeile entfernen + die beiden steuerzeichen '\r' und '\n'
                textBox1.Text = textBox1.Text.Remove(0, firstlinelength + 2);
//Caret wieder an seine alte Position setzen
                textBox1.SelectionStart = selectionstart - firstlinelength;
            }
        }

Achtung das is kein fertiger Code!!

T
Thomas123 Themenstarter:in
25 Beiträge seit 2008
vor 14 Jahren

Danke, ich dachte da gäb es eine Stelle wo man das einstellen kann.

Ich habe das jetzt so wie im Beispiel Campac gelöst. Am Ende habe ich noch ein
textBox1.ScrollToCaret();
gesetzt, dann wird auch an den letzten Eintrag gescrollt.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Thomas123,

ich dachte da gäb es eine Stelle wo man das einstellen kann.

vorgegeben gibt es nur TextBox.MaxLength (also Begrenzung der Anzahl der Zeichen, nicht der Zeilen) und selbst das führt nicht dazu, dass automatisch was gelöscht wird.

herbivore

4.939 Beiträge seit 2008
vor 14 Jahren

Und MaxLength gilt m.E. auch nur für vom Anwender eingetippten Text, nicht für vom Programm zugewiesenen (zumindestens für eine Single-Line-TextBox gilt dies, aber ich denke auch für eine Multi-Line-TextBox).