Многострочный выпуск WPF текстовое поле
Я создаю многострочный TextBox
с этой связью его работа лучше, но если я хочу установить TextBox
счетчик текста
label1.Content = textBox1.Text.Length;
С вышеприведенной строкой работают нормально, но проблема в том, что когда я нажимаю enter в счетчике TextBox
, он увеличит 2 символа в счетчике TextBox
.
Как я могу выполнить эту задачу, пожалуйста, помогите мне.
Любая помощь ценится!
4 ответа:
Ответ Андрея Гордеева правильный (+1 для него), но не дает прямого решения вашей проблемы. Если вы проверите строку
Таким образом, практический ответ на ваш вопрос таков: полагайтесь наtextBox1.Text
с помощью отладчика, то увидите соответствующие символы\r\n
. С другой стороны, если вы намереваетесь воздействовать на них напрямую (например, через.Replace
), вы ничего не получите.Environment.NewLine
. Пример кода:label1.Content = textBox1.Text.Replace(Environment.NewLine, "").Length;
Если вам нужен только один символ на "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; } }
Это потому, что новая строка представлена двумя символами:
\r
и\n
Связанный Вопрос: в чем разница между \r и \n?