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

C# RichtextBox替换文本后如何保留原选中区域?

解决RichTextBox替换文本后保留选中区域的问题

替换RichTextBox选中文本后,选中状态会被自动重置,要保留选中区域以便执行多次替换,只需在替换前后记录并重新设置选中范围即可。

修改后的代码

// 保存原选中区域的起始位置和选中文本
int originalSelectionStart = richTextBox1.SelectionStart;
string selectedText = richTextBox1.SelectedText;

// 执行正则替换
string replacedText = Regex.Replace(selectedText, "123", "456");

// 替换选中的文本内容
richTextBox1.SelectedText = replacedText;

// 重新设置选中区域:起始位置不变,长度为替换后的文本长度
richTextBox1.SelectionStart = originalSelectionStart;
richTextBox1.SelectionLength = replacedText.Length;

代码说明

  • 替换前记录SelectionStart(选中区域的起始字符索引),替换操作不会改变该位置的绝对索引,以此为基准能准确定位原选中区域的位置
  • 替换后将选中范围重新设置为原起始位置 + 替换后文本的长度,即可选中替换后的内容,无需反复手动选择同一区域
  • 原代码中获取行号、字符坐标的逻辑对保留选中区域无帮助,可直接移除

内容的提问来源于stack exchange,提问作者Romesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:17:03