为什么 TextBox 的插入符在输入后跳转到文本的开头?

Why TextBox's caret jumps to the beginning of text after input?

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

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

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

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

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

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

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

希望对您有所帮助。