wake-up-neo.com

Neue Datenzeile zu TextBox hinzufügen

Ich mache einen Chat-Client und momentan habe ich eine Schaltfläche, die Daten in einem mehrzeiligen Textfeld anzeigt, wenn Sie darauf klicken. Ist dies die einzige Möglichkeit, Daten in das mehrzeilige Textfeld einzufügen? Ich finde das extrem ineffizient, denn wenn die Konversation wirklich lang wird, wird auch die Zeichenfolge sehr lang.

private void button1_Click(object sender, EventArgs e)
        {
            string sent = chatBox.Text;
            displayBox.Text += sent + "\r\n";

        }
32
Brandon Ling

Wenn Sie WinForms verwenden:

Verwenden Sie stattdessen die AppendText(myTxt)-Methode für die TextBox (.net 3.5+):

    private void button1_Click(object sender, EventArgs e)
    {
        string sent = chatBox.Text;

        displayBox.AppendText(sent);
        displayBox.AppendText(Environment.NewLine);

    }

Text an sich hat normalerweise einen geringen Speicherbedarf (man kann viel sagen, zum Beispiel 10kb, was "nichts" ist). Das Textfeld stellt nicht den gesamten im Puffer befindlichen Text dar, sondern nur den sichtbaren Teil, sodass Sie sich nicht allzu viele Sorgen über die Verzögerung machen müssen. Bei den langsameren Operationen wird Text eingefügt. Das Anhängen von Text ist relativ schnell.

Wenn Sie einen komplexeren Umgang mit dem Inhalt benötigen, können Sie StringBuilder in Kombination mit dem Textfeld verwenden. Dadurch erhalten Sie einen sehr effizienten Umgang mit Text.

71
user1693593

Nachfolgend sind die Möglichkeiten

  1. Aus dem Code (der Art, wie Sie erwähnt haben) ->

    displayBox.Text += sent + "\r\n";
    

    oder

    displayBox.Text += sent + Environment.NewLine;
    
  2. Von der Benutzeroberfläche
    a) WPF

    Set TextWrapping="Wrap" and AcceptsReturn="True"   
    

    Drücken Sie die Eingabetaste für das Textfeld, und eine neue Zeile wird erstellt

    b) Winform-Textfeld 

    Set TextBox.MultiLine and TextBox.AcceptsReturn to true
    
29
Tilak

Da Sie nicht angegeben haben, welches Frontend (GUI-Technologie) Sie verwenden, ist es schwierig, eine bestimmte Empfehlung zu geben. In WPF können Sie eine Listbox erstellen und für jede neue Chatzeile ein neues Listboxitem am Ende der Sammlung hinzufügen. Dieser link enthält einige Vorschläge, wie Sie in einer Winforms-Umgebung dasselbe Ergebnis erzielen können.

0
alan

C # - serialData ist ReceivedEventHandler in TextBox.

SerialPort sData = sender as SerialPort;
string recvData = sData.ReadLine();

serialData.Invoke(new Action(() => serialData.Text = String.Concat(recvData)));

Jetzt lässt Visual Studio meine Zeilen fallen. TextBox hatte natürlich alle richtigen Optionen auf.

Seriennummer:

Serial.print(rnd);
Serial.( '\n' );  //carriage return
0
Luke Lozowski

Ich finde, diese Methode spart viel Tippen und verhindert viele Tippfehler.

zeichenfolge nl = "\ r\n";

txtOutput.Text = "Erste Zeile" + nl + "Zweite Zeile" + nl + "Dritte Zeile";

0
DanKuz