将数据添加到文本框的新行(Adding new line of data to TextBox)

2019-07-03 17:31发布

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

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

        }

Answer 1:

如果您使用的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,这是“无中生有”中很多)。 文本框不会呈现的所有文本是在缓冲区中,仅可见部分,所以你不必担心滞后太多。 较慢的操作插入文本。 追加文字是比较快的。

如果你需要的内容更复杂的操作,您可以使用StringBuilder与文本框相结合。 这会给你的文字处理非常有效的方式。



Answer 2:

以下是方法

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

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

    要么

     displayBox.Text += sent + Environment.NewLine; 
  2. 从UI
    一)WPF

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

    按Enter键文本框和新的生产线将被创建

    B)Winform的文本框中

     Set TextBox.MultiLine and TextBox.AcceptsReturn to true 


Answer 3:

因为你没有指定你所使用的前端(GUI技术),这将是很难作出具体的建议。 在WPF中你可以创建一个列表框和聊天的每一个新行添加一个新的ListBoxItem的到集合的末尾。 此链接提供了一些建议,你会如何实现一个WinForms环境相同的结果。



Answer 4:

我觉得这个方法可以节省大量的键入,并防止错别字很多。

串NL = “\ r \ n” 个;

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



Answer 5:

C# - serialData是ReceivedEventHandlerTextBox

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

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

现在,Visual Studio的下降我的台词。 文本框,当然,对所有正确的选项。

串行:

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


文章来源: Adding new line of data to TextBox