文本框始终将光标放在文本的开头

时间:2010-09-26 22:10:32

标签: c# visual-studio-2008 windows-forms-designer

我有一个文本框,没什么可惊讶的。当文本被更改时,我调用change事件并使用.upper()将该文本框中的所有内容放到大写字符中。但是,文本框始终将光标放在文本框的开头。因此,例如,假设您输入abc,它实际上将作为CBA显示在框中,因为光标似乎总是保留,除非您在文本框的开头使用箭头键,为什么这样,以及如何更正它?

collector_initials.Text = collector_initials.Text.ToUppper();

谢谢你。

2 个答案:

答案 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;