繁体   English   中英

突出显示RichTextBox中的特定文本

[英]Highlight specific text in richtextbox

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

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

谨在此提醒您,您有<< OverdueInvCount >>逾期发票,而余额为<< OverdueInvTotal >>。 如果您对欠款有任何疑问,请给我们打电话,我们将很乐意与您讨论。 如果您已经发送了付款,请忽略此提醒。

所有数据都来自数据库。

我想突出显示这两个单词<<OverdueInvCount>><<OverdueInvTotal>>

像这样的东西应该可以工作(刚刚测试过……似乎可以正常工作):

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

一种无需强制转换为具有所需功能的新对象的方法是重写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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM