3

我需要在 RTB 中突出显示我的文本的特定部分,而不是在更改字体样式/颜色的意义上,而是在使用特定颜色进行块选择的意义上。这类似于 Visual Studio 在调试模式下突出显示一行的方式。

这里重要的是在不使用richtextbox.select函数的情况下实现上述功能,因为我拥有的richtextbox会定期更新,如果它在每次更新时调用select函数,用户将很难拖动文本而我不这样做不希望发生这种情况。

我在编辑 rtf 的某个地方听到了一个解决方案,但我不完全确定如何做到这一点。我将不胜感激任何帮助。

4

2 回答 2

4

编辑:刚刚意识到的问题是针对winforms的。以下答案适用于 WPF,而不是删除我会留下它,以防有人发现它有用。

使用 TextRange(...) 获取文本并应用 Background 例如:

TextRange tr = new TextRange(position, nextPosition);
var Br = new SolidColorBrush(Color.FromScRgb(alpha, 1f, 1f, 0f));
tr.ApplyPropertyValue(TextElement.BackgroundProperty, Br);

但也许您应该研究一下您的更新机制并提出更好的解决方案。

于 2012-06-25T09:07:12.007 回答
1

这不使用富文本框的 Select() 函数。它只是在那些坐标中使用start and end index选择的 适当的。and updates the regionwithcolour

    // change the co-ordinates as per the selection in the run-time 
    richTextBox1.Text = "Select some text";
    richTextBox1.SelectionStart = 0;
    richTextBox1.SelectionLength = 4;
    richTextBox1.SelectionBackColor = Color.LightBlue;

Sele将在Light Blue上面的代码中被选中。

于 2012-06-25T10:12:19.997 回答