向TextBox添加新的数据行

我正在做一个聊天客户端,目前我有一个按钮,可以在点击时将数据显示到多行文本框。 这是将数据添加到多行文本框的唯一方法吗? 我觉得这是非常低效的,因为如果谈话变得非常长,那么字符串也会变得非常长。

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

如果您使用WinForms:

TextBox上使用AppendText(myTxt)方法(.net 3.5+):

  private void button1_Click(object sender, EventArgs e) { string sent = chatBox.Text; displayBox.AppendText(sent); displayBox.AppendText(Environment.NewLine); } 

文本本身通常具有较低的内存占用(你可以在f.ex.10kb中说很多,这是“没有”)。 TextBox不会渲染缓冲区中的所有文本,只渲染可见部分,因此您不必过多担心滞后。 较慢的操作是插入文本。 附加文本相对较快。

如果您需要更复杂的内容处理,可以将StringBuilder与文本框结合使用。 这将为您提供一种非常有效的文本处理方式。

以下是方法

  1. 从代码(你提到的方式) – >

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

    要么

     displayBox.Text += sent + Environment.NewLine; 
  2. 来自UI
    a)WPF

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

    按Enter键进入文本框,将创建新行

    b)Winform文本框

     Set TextBox.MultiLine and TextBox.AcceptsReturn to true 

因为您没有指定您正在使用的前端(GUI技术),所以很难做出具体的建议。 在WPF中,您可以创建一个列表框,并为每个新的聊天行添加一个新的listboxitem到集合的末尾。 此链接提供了一些有关如何在winforms环境中获得相同结果的建议。

我发现这种方法可以节省大量的打字,并且可以防止很多拼写错误。

string nl =“\ r \ n”;

txtOutput.Text =“第一行”+ nl +“第二行”+ nl +“第三行”;

C# – serialData是TextBox ReceivedEventHandler

 SerialPort sData = sender as SerialPort; string recvData = sData.ReadLine(); serialData.Invoke(new Action(() => serialData.Text = String.Concat(recvData))); 

现在,Visual Studio会删除我的行。 当然,TextBox具有所有正确的选项。

串行:

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