it-swarm.com.ru

Добавление новой строки данных в TextBox

Я делаю чат-клиент, и в настоящее время у меня есть кнопка, которая будет отображать данные в многострочном текстовом поле при нажатии. Это единственный способ добавить данные в многострочное текстовое поле? Я чувствую, что это крайне неэффективно, потому что, если разговор становится очень длинным, строка тоже будет очень длинной.

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

        }
32
Brandon Ling

Если вы используете 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);

    }

Текст сам по себе, как правило, занимает мало места в памяти (вы можете многое сказать, например, в 10 КБ, что является «ничем»). TextBox отображает не весь текст в буфере, а только видимую часть, поэтому вам не нужно слишком беспокоиться о задержке. Более медленные операции вставки текста. Добавление текста происходит относительно быстро.

Если вам нужна более сложная обработка содержимого, вы можете использовать StringBuilder в сочетании с текстовым полем. Это даст вам очень эффективный способ обработки текста.

71
user1693593

Ниже приведены способы

  1. Из кода (как вы упомянули) ->

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

    или же

    displayBox.Text += sent + Environment.NewLine;
    
  2. Из пользовательского интерфейса
    а) WPF

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

    Нажмите клавишу ввода в текстовое поле и новая строка будет создана

    б) Winform текстовое поле 

    Set TextBox.MultiLine and TextBox.AcceptsReturn to true
    
29
Tilak

Поскольку вы не указали, какой интерфейс (технологию GUI) вы используете, было бы сложно дать конкретную рекомендацию. В WPF вы можете создать список и для каждой новой строки чата добавить новый элемент списка в конец коллекции. Эта ссылка дает некоторые советы о том, как вы можете достичь того же результата в среде winforms.

0
alan

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
0
Luke Lozowski

Я считаю, что этот метод экономит много печатать и предотвращает много опечаток.

строка nl = "\ r\n";

txtOutput.Text = "Первая строка" + nl + "Вторая строка" + nl + "Третья строка";

0
DanKuz