5

TextBox我用这个链接创建多行它的工作更好但是如果我想设置TextBox文本计数器

label1.Content = textBox1.Text.Length;

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

我该如何完成这项任务,请帮助我。

任何帮助表示赞赏!

4

4 回答 4

5

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

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

label1.Content = textBox1.Text.Replace(Environment.NewLine, "").Length;
于 2013-08-27T08:18:45.747 回答
3

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

相关问题:\r 和 \n 有什么区别?

于 2013-08-27T08:08:37.393 回答
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;  
        }
    }
于 2013-08-27T08:52:21.493 回答
0

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

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

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

于 2013-08-27T09:13:01.350 回答