我使用this Link创建多行TextBox
,其工作效果更好但是如果我想设置TextBox
文本计数器
label1.Content = textBox1.Text.Length;
以上行工作正常,但问题是,当我在TextBox
计数器中按Enter键时,它会在TextBox
计数器中增加2个字符。
我该怎么做才能帮助我。
任何帮助表示赞赏!
答案 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
答案 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;