Добавление новой строки данных в TextBox
Я делаю клиент чата, и в настоящее время у меня есть кнопка, которая будет отображать данные в многострочном текстовом поле при нажатии. Это единственный способ добавить данные в многострочное текстовое поле? Я чувствую, что это крайне неэффективно, потому что, если разговор длится очень долго, строка также будет очень длинной.
private void button1_Click(object sender, EventArgs e)
{
string sent = chatBox.Text;
displayBox.Text += sent + "\r\n";
}
Ответы
Ответ 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.