在 C# 中的选定文本位置之前和之后插入 HTML TAG

Posted

技术标签:

【中文标题】在 C# 中的选定文本位置之前和之后插入 HTML TAG【英文标题】:Insert HTML TAG before and after selected text positionin C# 【发布时间】:2021-10-28 15:06:33 【问题描述】:

今天我想在 C# win-forms 中创建类似简单的 html 编辑器的东西。它应该为richbox中的选定文本添加特定的标签。所以我的设计真的很简单。

我想选择例如最后一个字母“d”并添加标签,所以最终结果应该看起来像

所以我尝试使用像这样的替换功能

richTextBox1.Text = richTextBox1.Text.Replace(richTextBox1.SelectedText, $"<red>richTextBox1.SelectedText</red>");

但它将替换所有其他“d”字母。有什么想法我该怎么做?

【问题讨论】:

【参考方案1】:

SelectedText 返回被选中的字符串。 所以,如果你选择“d”,它将只返回字符串“d”,所以它将替换所有内容。

您可以通过执行以下操作仅替换选定的字符串

var position = richTextBox1.SelectionStart;
var replacedText = $"<red>richTextBox1.SelectedText</red>";
richTextBox1.SelectedText = replacedText;
richTextBox1.Select(position, replacedText.Length);
richTextBox1.Focus();

【讨论】:

我完全期望这段代码能替换所有的SelectedText (即如果字母d 出现多次,它会替换所有的),但这并没有出现确实如此,这使它成为一个超级简单的解决方案。 如何在 c# 的文本框中失去焦点时保持突出显示选定的文本,因为当我单击按钮时,突出显示选定的文本丢失。如何解决这个问题?

以上是关于在 C# 中的选定文本位置之前和之后插入 HTML TAG的主要内容,如果未能解决你的问题,请参考以下文章

在文本区域中的光标位置之后插入文本

在 html 文本框中设置键盘插入符号位置

RichTextBox C# 设置插入符号位置 winforms

从.net(C#)中的Webbrowser控件中检索选定的文本

C# Winform 如何居中DataGirdView中的文本?

C# WPF - 选定项文本被剪切