在C# TextBox中如何获取按下回车键时的光标索引位置?
在C# TextBox控件中按下回车键时获取光标索引位置的方法
直接用TextBox的SelectionStart属性就能拿到按下回车时的光标索引——因为KeyDown事件触发时,系统还没处理回车的默认换行行为,光标位置保持不变,刚好是你按下回车时的位置。
结合你的需求,修改后的完整代码如下:
private void txtDesc_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { // 获取按下回车时的光标索引 int cursorIndex = txtDesc.SelectionStart; // 在光标位置插入HTML换行标签 txtDesc.Text = txtDesc.Text.Insert(cursorIndex, "<br>"); // 取消回车的默认换行行为,避免生成多余的换行符 e.SuppressKeyPress = true; // 将光标移到插入的<br>标签之后,方便继续输入 txtDesc.SelectionStart = cursorIndex + 4; } }
关键说明:
SelectionStart:当TextBox中没有选中任何文本时,这个属性的值就是当前光标所在的索引,完全匹配你示例中需要的19这个位置。- 加入
e.SuppressKeyPress = true是为了阻止TextBox默认的换行操作,避免同时出现<br>和系统自带的换行符。 - 最后调整光标位置是为了优化用户体验,让输入可以在插入的标签后继续。
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

