Многострочный выпуск WPF TextBox
Я создаю многострочный TextBox
с этой ссылкой, его работа лучше, но если я хочу установить TextBox
счетчик текста
label1.Content = textBox1.Text.Length;
с надстрочной работой работает нормально, но проблема в том, что когда я нажимаю enter в счетчике TextBox
, он увеличит 2 символа в счетчике TextBox
.
Как я могу выполнить эту задачу, пожалуйста, помогите мне.
Любая помощь ценится!
Ответы
Ответ 1
Ответ Андрея Гордеева правильный (+1 для него), но не дает прямого решения вашей проблемы. Если вы проверите строку textBox1.Text
с отладчиком, вы увидите ссылки \r\n
. С другой стороны, если вы намерены воздействовать на них напрямую (например, через .Replace
), вы ничего не получите.
Таким образом, практический ответ на ваш вопрос: полагаться на Environment.NewLine
. Пример кода:
label1.Content = textBox1.Text.Replace(Environment.NewLine, "").Length;
Ответ 2
если вам нужен только один символ в "Enter", вы можете просто обработать событие PreviewKeyDown в TextBox и вставить следующий обработчик:
private void Txt_OnPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
var txtBox = e.Source as TextBox;
var selectionStart = txtBox.SelectionStart;
txtBox.Text = txtBox.Text.Insert(selectionStart, "\n");
txtBox.Select(selectionStart + 1, 0);
e.Handled = true;
}
}
Ответ 3
Это потому, что newline представлен двумя символами: \r
и \n
Связанный вопрос: В чем разница между \r и\n?
Ответ 4
Используйте следующий код вместо label1.Content = textBox1.Text.Length;
label1.Text = textBox1.Text.Replace(Environment.NewLine, "").Length.ToString();
Не забудьте добавить using System.Text;