【问题标题】:Why TextBox's caret jumps to the beginning of text after input?为什么TextBox的插入符在输入后会跳到文本的开头?
【发布时间】:2019-01-16 17:59:12
【问题描述】:

我有一个用户控件,它包含一个图像和一个TextBox,在我在文本框中输入后,像插入符号一样的光标会跳到文本框中的文本开头,我该如何调试为什么会发生这种情况?

我知道这段代码可以把插入符号放在开头: textBox1.Select(0, 0); 但是我没有这样的代码,我尝试了 textBox1.Select(text.Length-1, 0) 这会将插入符号放在文本的末尾。无论最新输入的字母在哪里,如何确保插入符号在最新输入之后?

【问题讨论】:

    标签: c# uwp textbox caret


    【解决方案1】:

    如果您以编程方式更改TextBoxText 属性,那么它会自动将插入符号放在开头。所以,我认为您已经订阅了TextBoxTextChanged 事件,并且您在事件处理程序中放置了一些类似myTextBox.Text = "some text"; 的代码。

    当用户更改TextTextChanged 事件被触发,您的事件处理程序再次更改Text,结果,插入符号设置为开头。

    所以,这不是因为您的代码有任何错误。这是TextBox的默认行为,现在,无论是功能还是bug,都是有争议的。

    我也遇到过这个问题,我的解决方案是如果需要更改任何编程文本,我的解决方案是通过编程将光标放在末尾,并在事件处理程序的末尾使用此代码:

    myTextBox.Select(myTextBox.Text.Length, 0);
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2016-02-21
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      相关资源
      最近更新 更多