如何为richTextBox中的特定文本部分着色?

时间:2012-10-12 07:13:09

标签: c#

private void LoadKeys(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);
                ColorText(richTextBox2, Color.Red);
            }
           } 
        }

功能ColorText:

public void ColorText(RichTextBox box, Color color)
        {
            box.SelectionStart = box.TextLength; box.SelectionLength = 0;
            box.SelectionColor = color;
            box.SelectionColor = box.ForeColor;
        } 

但它没有用红色染色。没有改变。 我希望能够以红色着色,例如只有标记[0]和绿色标记[1]。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

public void ColorText(RichTextBox box, Color color)
        {
            box.Select(start, 5);
            box.SelectionColor = color;
        } 

答案 1 :(得分:3)

您在ColorText中显示的代码显示您将转到文本的末尾,将选择长度设置为0,将颜色设置为红色然后再返回到forecolor,这样就无法实现..

也许你需要做一些像

这样的事情
        box.Text = "This is a red color";
        box.SelectionStart = 10;
        box.SelectionLength = 3;
        box.SelectionColor = Color.Red;
        box.SelectionLength = 0;

答案 2 :(得分:0)

box.SelectionStart = box.TextLength; - 您的代码行可以解释为“开始突出显示从文本框末尾开始的文本”。即选择无文本,因为在最后一个文本之后不能有任何文本。

box.SelectionLength = 0; - 此外,此行可以解释为“突出显示0文本量”。你已经加倍确保你没有选择任何文字哈哈。

我不确定您要如何确定要选择的文字,但我会使用以下内容:

        public void ColorSelectedText(RichTextBox textBox, Int32 startPos, Int32 length, Color color)
        {
            textBox.Select(startPos, length);
            textBox.SelectionColor = color;
        } 

传入文本框对象和颜色。

您传递的整数可以被认为是用鼠标光标突出显示文本:

startPos是您点击鼠标的地方,'length'是startPos和释放鼠标的位置之间的字符数。