簡體   English   中英

向 TextBox 添加新的數據行

[英]Adding new line of data to 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. 從用戶界面
    一)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 + "第三行";

我使用此功能將最新的保持在頂部:

WriteLog("hello1");
WriteLog("hello2");
WriteLog("hello3");


public void WriteLog(string text)
{
    var last = txtLog.Text;
    txtLog.Text = DateTime.Now.ToString("G") + ": " + text;
    txtLog.AppendText(Environment.NewLine);
    txtLog.AppendText(last);            
}

會輸出這個:

在此處輸入圖像描述

因為您沒有指定您使用的前端(GUI 技術),所以很難做出具體的推薦。 在 WPF 中,您可以創建一個列表框,並為每一行新的聊天添加一個新的列表框項到集合的末尾。 鏈接提供了一些關於如何在 winforms 環境中實現相同結果的建議。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM