C#在TextBox光标位置插入字符问题:代码执行后文本插在开头
解决TextBox插入文本总是到开头的问题
嘿,我懂你这会儿的困扰——明明想着在光标位置插入文本,结果每次都跑到开头去了,咱们来捋捋怎么解决这个问题:
问题根源排查
你写的这段代码逻辑本身没毛病,但大概率是获取SelectionStart的时候,TextBox并没有获得焦点,导致selectionIndex的值一直是0,文本自然就插到开头了。另外,修改Text属性后,光标会默认跳回起始位置,就算插入位置是对的,视觉上也会让人误以为插错了地方。
修正后的代码方案
string insertText = "$"; // 先确保TextBox获取焦点,这样才能拿到正确的光标位置 textBox1.Focus(); int selectionIndex = textBox1.SelectionStart; // 执行文本插入操作 textBox1.Text = textBox1.Text.Insert(selectionIndex, insertText); // 把光标移到插入文本的后方,优化操作体验 textBox1.SelectionStart = selectionIndex + insertText.Length; textBox1.SelectionLength = 0; // 确保没有选中多余内容
更简洁的替代写法
其实还有个更省心的方式,直接利用SelectedText属性,它会自动在当前光标位置插入文本,还能自动维护光标位置:
textBox1.Focus(); textBox1.SelectedText = "$";
内容的提问来源于stack exchange,提问作者UnyMath
相关产品推荐
相关产品推荐

