突出显示richtextbox中的特定文本

时间:2013-02-08 04:56:39

标签: c# richtextbox highlighting

我有一个包含listbox和一些richtextboxex的窗口表单。 listbox包含一些值。当我从listbox中选择任何值时,richtextboxex根据所选值与数据绑定。

当我从列表框中选择一个值时,我必须突出显示绑定到richtextbox的一些文本,例如:

  

只是一个友好的提醒,你有<<< OverdueInvCount>>逾期发票,逾期余额为<<< OverdueInvTotal>>。如果您对欠款有任何疑问,请致电我们,我们将很乐意与您讨论。如果您已经付款,请忽略此提醒。

所有数据都来自数据库。

我想强调<<OverdueInvCount>><<OverdueInvTotal>>这些词。

2 个答案:

答案 0 :(得分:0)

这样的东西应该可以工作(只是测试了这个..似乎工作正常):

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);
}

答案 1 :(得分:0)

如果不转换为具有所需功能的新对象,其中一种方法是覆盖ListBox DrawItem

void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    var item = listBox1.Items[e.Index] as <Your_Item>;

    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);