我正在做一个聊天客户端,目前我有一个按钮,单击时将数据显示到多行文本框。这是向多行文本框添加数据的唯一方法吗?我觉得这是非常低效的,因为如果对话变得很长,字符串也会变得很长。
private void button1_Click(object sender, EventArgs e)
{
string sent = chatBox.Text;
displayBox.Text += sent + "\r\n";
}
我正在做一个聊天客户端,目前我有一个按钮,单击时将数据显示到多行文本框。这是向多行文本框添加数据的唯一方法吗?我觉得这是非常低效的,因为如果对话变得很长,字符串也会变得很长。
private void button1_Click(object sender, EventArgs e)
{
string sent = chatBox.Text;
displayBox.Text += sent + "\r\n";
}
如果您使用 WinForms:
改用该AppendText(myTxt)方法TextBox(.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) WPF
Set TextWrapping="Wrap" and AcceptsReturn="True"
按 Enter 键进入文本框,将创建新行
b) Winform 文本框
Set TextBox.MultiLine and TextBox.AcceptsReturn to true
我发现这种方法节省了大量的打字,并防止了很多错别字。
字符串 nl = "\r\n";
txtOutput.Text = "第一行" + nl + "第二行" + nl + "第三行";
因为您没有指定您使用的前端(GUI 技术),所以很难做出具体的推荐。在 WPF 中,您可以创建一个列表框,并为每一行新的聊天添加一个新的列表框项到集合的末尾。此链接提供了一些关于如何在 winforms 环境中实现相同结果的建议。
C# - serialDataReceivedEventHandler在TextBox.
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