我有这个功能:
private void richTextBoxLoadKeys(Dictionary<string, List<string>> dictionary, string FileName)
{
string line = System.String.Empty;
using (StreamReader sr = new StreamReader(keywords))
{
while ((line = sr.ReadLine()) != null)
{
string[] tokens = line.Split(',');
dictionary.Add(tokens[0], tokens.Skip(1).ToList());
richTextBox2.AppendText("Url: " + tokens[0] + " --- " + "Localy KeyWord: " + tokens[1]+Environment.NewLine);
AppendText(richTextBox2, "Url: ", Color.Red);
}
sr.Close();
}
}
我有函数AppendText:
public void AppendText(RichTextBox box, string text, Color color)
{
box.SelectionStart = box.TextLength;
box.SelectionLength = 0;
box.SelectionColor = color;
box.AppendText(text);
box.SelectionColor = box.ForeColor;
}
在richTextBox 我有例如:
Url: http://www.google.com --- Localy KeyWord: google
Url: http://www.cnet.com --- Localy KeyWord: cnet
Url: http://www.g.com --- Localy KeyWord: g
尝试将其着色为红色时的结果是,第一个 Url: 为黑色,然后后面的两个为红色,最后仅使用 Url: 为红色添加新行。
我想要做的是将 URL 用红色着色:它自己的链接用黄色 --- 用绿色表示 localy 关键字:用粉红色和 google 或 cnet 或 g 用蓝色。
我希望每行中文本的每个部分都采用另一种颜色。
解决了它:
void AppendText()
{
int len = this.richTextBox2.TextLength;
int index = 0;
int lastIndex = this.richTextBox2.Text.LastIndexOf("Url: ");
while (index < lastIndex)
{
this.richTextBox2.Find("Url: ", index, len, RichTextBoxFinds.None);
this.richTextBox2.SelectionColor = Color.Red;
index = this.richTextBox2.Text.IndexOf("Url: ", index) + 1;
}
}