向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
与文本框结合使用。 这将为您提供一种非常有效的文本处理方式。
以下是方法
-
从代码(你提到的方式) – >
displayBox.Text += sent + "\r\n";
要么
displayBox.Text += sent + Environment.NewLine;
-
来自UI
a)WPFSet 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