私はこの機能を持っています:
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: が黒になり、その後の 2 つが赤になり、最後に 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;
}
}