向TextBox添加新的数据行

时间:2012-11-10 02:07:10

标签: c# .net winforms user-interface textbox

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

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

        }

5 个答案:

答案 0 :(得分:76)

如果您使用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与文本框结合使用。这将为您提供一种非常有效的文本处理方式。

答案 1 :(得分:32)

以下是方式

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

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

    displayBox.Text += sent + Environment.NewLine;
    
  2. 来自用户界面 a)WPF

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

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

    b)Winform文本框

    Set TextBox.MultiLine and TextBox.AcceptsReturn to true
    

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我发现这种方法可以节省大量的输入,并且可以防止很多错别字。

string nl =" \ r \ n";

txtOutput.Text ="第一行" + nl +"第二行" + nl +"第三行&#34 ;;

答案 4 :(得分:0)

C#-serialData在ReceivedEventHandler中是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