【问题标题】:Multiline issue WPF TextBox多行问题 WPF 文本框
【发布时间】:2023-03-23 21:42:01
【问题描述】:

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

label1.Content = textBox1.Text.Length;

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

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

任何帮助表示赞赏!

【问题讨论】:

    标签: c# wpf textbox multiline


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案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;  
                }
            }
        

        【讨论】:

        • 就像评论一样。使用“\n”而不是 Environment.NewLine 没有特殊原因。实际上,大多数字符串分析方法都“忽略”了“\n”。显然,OP 喜欢你的答案,即使他无法通过依赖 "\n" 得到他想要的(计算字符串中的字符数而不考虑换行符);他应该依赖 Environment.NewLine。我认为这些想法应该让未来的读者清楚。
        • 我每一秒都更加困惑:我已经测试了您的代码,但根本无法正常工作。另一方面,什么是合乎逻辑的:如前所述,您不能通过字符串管理方法(您在 texbox 中所做的事情)影响 /n 字符。如果能够做到这一点,“进入效果”/新行将会消失,无论如何,什么不是 OP 想要的?!这对我来说太奇怪了。啊!在我的解释之后你又有了一个新的+1!?嗯,印象深刻!哈哈。
        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-30
          • 2010-12-20
          • 1970-01-01
          • 1970-01-01
          • 2011-02-08
          • 1970-01-01
          • 2011-04-23
          • 2011-03-29
          相关资源
          最近更新 更多