多行问题WPF TextBox

时间:2013-08-27 07:52:14

标签: c# wpf textbox multiline

我使用this Link创建多行TextBox,其工作效果更好但是如果我想设置TextBox文本计数器

label1.Content = textBox1.Text.Length;

以上行工作正常,但问题是,当我在TextBox计数器中按Enter键时,它会在TextBox计数器中增加2个字符。

我该怎么做才能帮助我。

任何帮助表示赞赏!

4 个答案:

答案 0 :(得分:5)

Andrey Gordeev的回答是正确的(+1代表他),但没有为您的问题提供直接的解决方案。如果使用调试器检查textBox1.Text字符串,您将看到引用的\r\n字符。另一方面,如果你打算直接影响它们(例如通过.Replace),你就不会得到任何东西。

因此,您问题的实际答案是:依靠Environment.NewLine。示例代码:

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

答案 1 :(得分:3)

这是因为newline由两个符号表示:\r\n

相关问题:What is the difference between \r and \n?

答案 2 :(得分:3)

如果你只需要在“Enter”上输入一个字符,那么你就可以在TextBox上处理PreviewKeyDown事件并粘贴以下处理程序:

    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 :(得分:0)

使用以下代码代替label1.Content = textBox1.Text.Length;

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

请不要忘记添加using System.Text;