c# 将某个字的颜色改变

如何用c#将某个字的颜色改变如图所示我尝试过用RichTextBox但是我没有发现关于更改颜色的RichTextBox.SelectionBackColor如图所示... 如何用c#将某个字的颜色改变 如图所示我尝试过用RichTextBox但是我没有发现关于更改颜色的RichTextBox.SelectionBackColor 如图所示 展开
 我来答
魔法软糖™
2019-07-09 · TA获得超过837个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:141万
展开全部

WinForm

使用richTextBox.SelectionColor = Color; 来设置当前选中文本的颜色。

.SelectionStart和.SelectionLength可以设置选择文本的开始位置和长度。

下面这个方法可以更改指定关键字的颜色

public void ChangeKeyColor(RichTextBox rBox, string key, Color color) {

Regex regex = new Regex(key);

//找出内容中所有的要替换的关键字

MatchCollection collection = regex.Matches(rBox.Text);

//对所有的要替换颜色的关键字逐个替换颜色

foreach (Match match in collection) {

//开始位置、长度、颜色缺一不可

rBox.SelectionStart = match.Index;

rBox.SelectionLength = key.Length;

rBox.SelectionColor = color;

}

}

WPF

private void button_Click(object sender, RoutedEventArgs e) {

//改颜色的内容

string word = "11";

//TextPointer tp1 = rBox1.CaretPosition;

//TextPointer tp2 = rBox1.Document.ContentEnd;

rBox1.AppendText("11223311445511\n");

TextPointer tp1;

TextPointer tp2;

while (true) {                

tp1 = FindWordFromPosition(rBox1.CaretPosition, word);

if (tp1 == null) { break; }

tp2 = tp1.GetPositionAtOffset(word.Length);

rBox1.Selection.Select(tp1, tp2);

rBox1.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue);

}; 

}

// This method will search for a specified word (string) starting at a specified position.

TextPointer FindWordFromPosition(TextPointer position, string word) {

while (position != null) {

if (position.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text) {

string textRun = position.GetTextInRun(LogicalDirection.Forward);

// Find the starting index of any substring that matches "word".

int indexInRun = textRun.IndexOf(word);

if (indexInRun >= 0) {

position = position.GetPositionAtOffset(indexInRun);

break;

}

} else

position = position.GetNextContextPosition(LogicalDirection.Forward);

}

// position will be null if "word" is not found.

return position;

}

更多追问追答
追问

追答
你是Winform窗体应用程序,还是WPF?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式