Подтвердить что ты не робот

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

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

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

        }
4b9b3361

Ответ 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, который "ничего" ). TextBox не отображает весь текст, который находится в буфере, только видимая часть, поэтому вам не нужно слишком беспокоиться о задержке. Более медленные операции вставляют текст. Добавление текста относительно быстро.

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

Ответ 2

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

  • Из кода (как вы уже упоминали) →

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

    или

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

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

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

    b) Текстовое поле Winform

    Set TextBox.MultiLine and TextBox.AcceptsReturn to true
    

Ответ 3

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