2009-08-28 17 views
7

Ich bin ziemlich neu in C# (ich hatte kürzlich ein RS-232-Problem) und versuche, eine kleine Anwendung zu schreiben, die verschiedene Aufgaben hinter den Kulissen ausführt und ich möchte ein Protokoll erstellen Nachrichten, um den Benutzer auf dem neuesten Stand der Anwendung zu halten.C# - Ein Protokoll mit einem Textfeld schreiben

Das Protokoll besteht nur aus einfachen einzeiligen Nachrichten.

Ich verwende derzeit ein Textfeld, das deaktiviert ist, so dass der Benutzer es nicht ändern kann. Ich kann natürlich mehrere Textzeilen mit den \ r \ n Zeichen am Ende einer Zeile machen, aber wenn ich einen zweiten Satz von Nachrichten schreibe, werden sie am Anfang des Textfelds geschrieben und überschreiben die ersten Nachrichten.

Kann ich dies zum Anhängen anstatt zum Überschreiben ändern? Wird das Textfeld automatisch einen Rollbalken hinzufügen, wenn der Text mehr als die Box anzeigen kann?

Antwort

6
textBox1.Text += "new Log Message" + Environment.NewLine; 

machen die texbox nicht deaktiviert, sondern nur lesbar und die Scrollbar

+0

Alle funktionierte super und ich hatte das Textbox sonst die Bildlaufleiste aktivieren würde nicht bewegen, aber nur sortiert, dass aus zu lesen! Vielen Dank !! Brillant. – George

+0

Sie sind herzlich willkommen;) –

+0

Es gibt ein Problem hier. Wenn der erste Protokolleintrag hinzugefügt wird, wird am Anfang ein leerer Zeilenumbruch angezeigt. – erelender

4

Um es an der Spitze hinzufügen erscheint:

textBox.Text = newText + Environment.NewLine + textBox.Text; 

es anhängen:

textBox.Text += Environment.NewLine + newText; 

Ja , eine Bildlaufleiste wird automatisch hinzugefügt.

2

Sie können auf den Text mit diesem Stück Code anhängen:

myTextBox.Text += myLogText + Environment.NewLine; 

Alternativ können Sie eine List-Box verwenden.

0

Eine bessere Option ist zu verwenden:

TextBox.AppendText(string) 

zum Beispiel:

myTextBox.AppendText(newLogEntry + Environment.NewLine); 

die auch eine mehrzeilige Textbox blättern auf den Knopf macht als Flackern der Bildlaufleiste zu vermeiden.

MSDN on TextBox.AppendText(string)

Verwandte Themen