我需要在RTB中突出显示我文本的某一部分,而不是改变字体样式/颜色,而是使用特定颜色进行块选择。这类似于Visual Studio在调试模式下突出显示一行的方式。
如何使用RTB完成此功能,或者更确切地说,它是否可能?如果不可能,我想听听另一种执行上述任务的方式。
答案 0 :(得分:9)
是的,您可以使用RichTextBox.SelectionBackColor属性设置RichTextBox选择的BackColor。
int blockStart = 1; //arbitrary numbers to test
int blockLength = 15;
richTextBox1.SelectionStart = blockStart;
richTextBox1.SelectionLength = blockLength;
richTextBox1.SelectionBackColor = Color.Yellow;
答案 1 :(得分:8)
我认为您正在寻找ScintillaNET。
另一方面,如果您想在RTB中自己完成此操作,那么您可以先找到使用TextBoxBase.Lines属性的lineNumber
来完成此操作。然后......
//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;
答案 2 :(得分:1)
在这里,我创建了CustomRichTextBox来实现这一目标。
这里解释了一个很长的场景源代码。如果您感兴趣,那么您可以直接重用此用户控件而无需担心太多
方案
源代码:
https://github.com/boobalaninfo/CustomRichTextBoxWithHighligh