C# 多行问题WPF文本框

C# 多行问题WPF文本框,c#,wpf,textbox,multiline,C#,Wpf,Textbox,Multiline,我正在创建多行TextBox,它的效果更好,但如果我想设置TextBox文本计数器 label1.Content=textBox1.Text.Length label1.Text = textBox1.Text.Replace(Environment.NewLine, "").Length.ToString(); 上面的行工作正常,但问题是当我在文本框计数器中按enter键时,它将在文本框计数器中增加2个字符 我怎样才能完成这项任务请帮助我 感谢您的帮助 这是因为它由两个符号表示:\r和\n

我正在创建多行
TextBox
,它的效果更好,但如果我想设置
TextBox
文本计数器

label1.Content=textBox1.Text.Length

label1.Text = textBox1.Text.Replace(Environment.NewLine, "").Length.ToString();
上面的行工作正常,但问题是当我在
文本框
计数器中按enter键时,它将在
文本框
计数器中增加2个字符

我怎样才能完成这项任务请帮助我

感谢您的帮助

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


相关问题:

安德烈·戈尔迪夫的回答是正确的(对他来说是+1),但并没有为你的问题提供直接的解决方案。如果使用调试器检查
textBox1.Text
字符串,您将看到引用的
\r\n
字符。另一方面,如果您打算直接影响它们(例如,通过
.Replace
),您将一无所获

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

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

如果“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;  
        }
    }

使用下面的代码,而不是
label1.Content=textBox1.Text.Length

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

请不要忘记使用System.Text添加

仅作为注释。使用Environment.NewLine的“\n”intead没有特殊原因。实际上,“\n”被大多数字符串分析方法“忽略”。显然,OP喜欢你的答案,即使他无法通过依赖“\n”(计算字符串中的字符数而不考虑新行字符数)来获得他想要的答案;他应该依靠环境。我认为这些想法应该让未来的读者明白。我每一秒都感到困惑:我已经测试了你的代码,根本不起作用。另一方面,什么是合乎逻辑的:如前所述,您不能通过字符串管理方法(您在texbox中所做的操作)影响/n字符。如果能够做到这一点,“输入效果”/“新行”就会消失,那么OP到底想要什么?!这对我来说太奇怪了。啊!!经过我的解释,你得到了一个新的+1!?嗯,令人印象深刻!英雄联盟