我需要在 RTB 中突出显示我的文本的特定部分,而不是在更改字体样式/颜色的意义上,而是在使用特定颜色进行块选择的意义上。这类似于 Visual Studio 在调试模式下突出显示一行的方式。
我如何使用 RTB 完成此功能,或者更确切地说,它甚至可能吗?如果不可能,我想听听另一种执行上述任务的方法。
我需要在 RTB 中突出显示我的文本的特定部分,而不是在更改字体样式/颜色的意义上,而是在使用特定颜色进行块选择的意义上。这类似于 Visual Studio 在调试模式下突出显示一行的方式。
我如何使用 RTB 完成此功能,或者更确切地说,它甚至可能吗?如果不可能,我想听听另一种执行上述任务的方法。
是的,您可以使用RichTextBox.SelectionBackColor属性设置 RichTextBox 选择的背景颜色。
int blockStart = 1; //arbitrary numbers to test
int blockLength = 15;
richTextBox1.SelectionStart = blockStart;
richTextBox1.SelectionLength = blockLength;
richTextBox1.SelectionBackColor = Color.Yellow;
我认为您正在寻找ScintillaNET。
另一方面,如果您想在 RTB 中自己执行此操作,则可以通过首先找到lineNumber
using TextBoxBase.Lines属性来执行此操作。然后 ...
//Select the line from it's number
startIndex = richTextBox.GetFirstCharIndexFromLine(lineNumber);
richTextBox.Select(startIndex, length);
//Set the selected text fore and background color
richTextBox.SelectionColor = System.Drawing.Color.White;
richTextBox.SelectionBackColor= System.Drawing.Color.Blue;
在这里,我创建了 CustomRichTextBox 来实现这一点。
这里解释了一个很长的场景的源代码。如果你有兴趣,那么你可以直接重用这个用户控件,而不用担心太多
设想
源代码:
https://github.com/boobalaninfo/CustomRichTextBoxWithHighligh