突出显示richtextbox中的特定文本
我有一个窗口表单,其中包含一个listbox
和一些richtextboxex
。 listbox
包含一些值。 当我从listbox
选择任何值时, richtextboxex
根据所选值与数据绑定。
当我从列表框中选择一个值时,我必须突出显示绑定到richtextbox
一些文本,例如:
只是一个友好的提醒,你有<>逾期发票,逾期余额为<>。 如果您对欠款有任何疑问,请致电我们,我们将很乐意与您讨论。 如果您已经付款,请忽略此提醒。
所有数据都来自数据库。
我想突出显示<>
和<>
这些词。
像这样的东西应该工作(只是测试这..似乎工作正常):
int openBrace = richTextBox.Text.IndexOf("<"); while (openBrace > -1) { int endBrace = richTextBox.Text.IndexOf(">", openBrace); if (endBrace > -1) { richTextBox.SelectionStart = openBrace; richTextBox.SelectionLength = endBrace - openBrace; richTextBox.SelectionColor = Color.Blue; } openBrace = richTextBox.Text.IndexOf("<", openBrace + 1); }
在不转换为具有所需function的新对象的情况下执行此操作的一种方法是覆盖ListBox
DrawItem
void listBox1_DrawItem(object sender, DrawItemEventArgs e) { var item = listBox1.Items[e.Index] as ; e.DrawBackground(); if (item.fIsTemplate) { e.Graphics.DrawString(item.Text + "(Default)", new Font("Microsoft Sans Serif", 8, FontStyle.Regular), Brushes.Black, e.Bounds); } else { e.Graphics.DrawString(item.Text, new Font("Microsoft Sans Serif", 8, FontStyle.Regular), Brushes.Black, e.Bounds); } e.DrawFocusRectangle(); }
并在构造函数中添加它(在InitializeComponent();
调用)
listBox1.DrawMode = DrawMode.OwnerDrawFixed; listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);