Multiline issue WPF TextBox

为君一笑 提交于 2020-01-14 09:49:05

问题


I creating multiline TextBox with this Link its work better but if I want to set TextBox text counter

label1.Content = textBox1.Text.Length;

with above line work fine but problem is that when I press enter in the TextBox counter it will increase 2 characters in TextBox counter.

How can I do this task please help me.

Any help appreciated!


回答1:


Andrey Gordeev's answer is right (+1 for him) but does not provide a direct solution for your problem. If you check the textBox1.Text string with the debugger you would see the referred \r\n characters. On the other hand, if you intend to affect them directly (via .Replace, for example), you wouldn't get anything.

Thus, the practical answer to your question is: rely on Environment.NewLine. Sample code:

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



回答2:


That's because newline is presented by two symbols: \r and \n

Related question: What is the difference between \r and \n?




回答3:


if you need just one character on "Enter" then you can just handle PreviewKeyDown event on TextBox and paste following handler:

    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;  
        }
    }



回答4:


Use the code below instead of label1.Content = textBox1.Text.Length;

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

Please don't forget to add using System.Text;



来源:https://stackoverflow.com/questions/18459908/multiline-issue-wpf-textbox

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!