代码之家  ›  专栏  ›  技术社区  ›  flavour404

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

  •  1
  • flavour404  · 技术社区  · 14 年前

    我有一个文本框,没什么奇怪的。当文本更改时,我调用Change事件,并使用.upper()将该文本框中的所有内容都放为大写字符。但是,文本框总是将光标放在文本框的开头。例如,假设您输入abc,它实际上会以cba的形式出现在框中,因为光标似乎始终保持不变,除非您在文本框的开头使用箭头键,否则这是为什么?如何更正它?

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

    谢谢R。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Hans Passant    14 年前

    设置文本属性将重置textbox.selectionstart和selectionlength属性。更改进程中的插入点。这里有一个更好的mousetrap,实现keypress事件,这样你就可以修改按下的键。这样地:

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
            e.KeyChar = char.ToUpper(e.KeyChar);
        }
    
        2
  •  0
  •   Ed Swangren    14 年前

    更改文本前保存当前索引:

    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;
    
    推荐文章