键入特殊字符后,在richTextBox中更改单词的背景颜色

时间:2013-07-01 16:00:17

标签: c# winforms richtextbox

使用richTextBox控件,如何实时更改以逗号分隔的单词的背景颜色,并放置空格而不是逗号?有点像关键字的Stackoverflow表示。

2 个答案:

答案 0 :(得分:0)

以下字符串:“一,二,三,四”可以转换为字符串列表,其中包含“One” - “Two” - “Three” - “Four”项,代码如下:

string FullString = "One, Two, Three, Four";
Regex rx = new Regex(", ");
List<string> ListOfStrings = new List<string>();
foreach (string newString in rx.Split(FullString))
{
     ListOfStrings.Add(newString);
}

关于颜色,你可以看看这里: Rich Text Box how to highlight text block

为了能够实时执行此操作,我建议您使用TextChanged事件进行RTB,然后可以调用更改颜色的函数。 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx

完成此操作后,您可以使用String.Replace(char, char)功能删除逗号并将其更改为空格。 http://msdn.microsoft.com/en-us/library/czx8s9ts.aspx

答案 1 :(得分:0)

这里有一个小代码,当某个单词(“任何东西”)写在richtextbox中时,会为背景添加红色。我希望这足以帮助您了解如何在运行时与richtextbox进行交互。请记住,它非常简单:只有在你引入的第一个单词时,它才会为“任何东西”着色;如果你在其后写下任何其他字符,则停止着色。

    int lastStart = 0;
    int lastEnd = 0;
    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
        richTextBox1.Select(lastStart, lastEnd + 1);

        if (richTextBox1.SelectedText.ToLower() == "anything")
        {
            richTextBox1.SelectionBackColor = Color.Red;
            lastStart = richTextBox1.SelectionStart + richTextBox1.SelectionLength;
        }
        else
        {
            richTextBox1.SelectionBackColor = Color.White;
        }

        lastEnd = richTextBox1.SelectionStart + richTextBox1.SelectionLength;
        richTextBox1.Select(lastEnd, 1);
    }
相关问题