0

重複の可能性:
richTextBox 内のテキストの特定の部分に色を付けるにはどうすればよいですか?

私はこの機能を持っています:

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;
            }
        }
4

2 に答える 2

0

これで解決しました:

void AppendText(string text,Color color)
        {

            int len = this.richTextBox2.TextLength;
            int index = 0;
            int lastIndex = this.richTextBox2.Text.LastIndexOf(text);

            while (index < lastIndex)
            {
                this.richTextBox2.Find(text, index, len, RichTextBoxFinds.None);
                this.richTextBox2.SelectionColor = color;
                index = this.richTextBox2.Text.IndexOf(text, index) + 1;
            }
        }
于 2012-10-15T12:30:20.500 に答える
0

Select設定する前に呼び出す必要がありますSelectionColor。以下はコード例です。

box.Select(0, 10);
box.SelectionColor = color; 
于 2012-10-15T09:44:04.297 に答える