RichTextBox删除文本丢失格式或报错,如何实现光标到开头删除?
解决RichTextBox中按F2删除光标至文本开头并保留格式的问题
直接修改Rtf属性会破坏RTF格式结构——因为SelectionStart是纯文本的字符索引,和RTF源码的字符位置不对应,强行截取会导致格式解析报错。正确的做法是利用RichTextBox的选区操作实现,完全不会丢失原有格式:
if (e.KeyCode == Keys.F2) { // 获取当前光标所在位置 int currentCursorPos = txtDescription___.SelectionStart; // 选中从文本开头到光标处的所有内容 txtDescription___.SelectionStart = 0; txtDescription___.SelectionLength = currentCursorPos; // 删除选中内容,剩余部分格式自动保留 txtDescription___.SelectedText = ""; // 阻止F2键触发系统默认行为 e.Handled = true; }
补充说明:
- 这种选区操作是RichTextBox原生支持的方式,内部会正确处理RTF格式标记,不会出现格式损坏问题
- 代码里的
e.Handled = true必须加上,避免F2键的默认功能干扰自定义逻辑
内容的提问来源于stack exchange,提问作者Shaiwal Tripathi
相关产品推荐
相关产品推荐

