我有一个文本框,没什么可惊讶的。当文本被更改时,我调用change事件并使用.upper()将该文本框中的所有内容放到大写字符中。但是,文本框始终将光标放在文本框的开头。因此,例如,假设您输入abc,它实际上将作为CBA显示在框中,因为光标似乎总是保留,除非您在文本框的开头使用箭头键,为什么这样,以及如何更正它?
collector_initials.Text = collector_initials.Text.ToUppper();
谢谢你。
答案 0 :(得分:1)
设置Text属性会重置TextBox.SelectionStart和SelectionLength属性。更改过程中的插入点。这里有一个更好的捕鼠器,实现KeyPress事件,以便您可以修改按下的键。像这样:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
e.KeyChar = char.ToUpper(e.KeyChar);
}
答案 1 :(得分:0)
在更改文本之前保存当前索引:
int savedIndex = textbox.SelectionStart;
更改文本后再次设置:
// you will have to decide what to do if your index is larger than the text length
textbox.SelectionStart = Math.Min( savedIndex, textbox.Text.Length );
textbox.SelectionLength = 0;