Многострочный выпуск 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;  
        }
    }

Ответ 4

Используйте следующий код вместо label1.Content = textBox1.Text.Length;

label1.Text = textBox1.Text.Replace(Environment.NewLine, "").Length.ToString();

Не забудьте добавить using System.Text;