我想创建一个简单的文本编辑器,但支持多色字体,如“编译器”
假设我的节目关键词是:“dog”,“cow”,“cat”,“bird”
我有一个实现TextChanged事件的RichTextBox。
现在,我的问题是我不知道在遇到关键字时如何更改字体颜色。
示例字符串:A Big Dog and a Cat
狗颜色为红色而猫颜色为绿色。
答案 0 :(得分:0)
我不确定当你有大量的文本时它会有多高效,但是在我测试它的程度上它的效果相当好。
private void CheckKeyword(string word, Color color, int startIndex)
{
if (this.richTextBox1.Text.Contains(word))
{
int index = -1;
int selectStart = this.richTextBox1.SelectionStart;
while ((index = this.richTextBox1.Text.IndexOf(word, (index + 1))) != -1)
{
this.richTextBox1.Select((index + startIndex), word.Length);
this.richTextBox1.SelectionColor = color;
this.richTextBox1.Select(selectStart, 0);
this.richTextBox1.SelectionColor = Color.Black;
}
}
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
this.CheckKeyword("dog", Color.Red, 0);
this.CheckKeyword("cat", Color.Green, 0);
}