我将 RichTextBox 用于彩色文本。假设我想为文本的不同部分使用不同的颜色。到目前为止,这工作正常。
我目前遇到了 RichTextBox 的 SelectionStart 属性的问题。我已经为 RichTextBox 的 Text 属性设置了一些文本。如果文本包含\r\n\r\n
SelectionStart 位置,则与指定字符串的字符位置不匹配。
小例子(WinformsApplication.Form with RichTextBox):
public Form1()
{
InitializeComponent();
String sentence1 = "This is the first sentence.";
String sentence2 = "This is the second sentence";
String text = sentence1 + "\r\n\r\n" + sentence2;
int start1 = text.IndexOf(sentence1);
int start2 = text.IndexOf(sentence2);
this.richTextBox1.Text = text;
String subString1 = text.Substring(start1, sentence1.Length);
String subString2 = text.Substring(start2, sentence2.Length);
bool match1 = (sentence1 == subString1); // true
bool match2 = (sentence2 == subString2); // true
this.richTextBox1.SelectionStart = start1;
this.richTextBox1.SelectionLength = sentence1.Length;
this.richTextBox1.SelectionColor = Color.Red;
this.richTextBox1.SelectionStart = start2;
this.richTextBox1.SelectionLength = sentence2.Length;
this.richTextBox1.SelectionColor = Color.Blue;
}
RichTextBox 如下所示:
如您所见,第二句的前两个字符没有着色。这是由 产生的偏移的结果\r\n\r\n
。
这是什么原因?我应该使用另一个控件为文本着色吗?如何以可靠的方式解决问题?我尝试用"\r\n\r\n"
String.Empty 替换 ,但这会产生其他偏移问题。