You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:27:43