我有一个包含listbox
和一些richtextboxex
的窗口表单。 listbox
包含一些值。当我从listbox
中选择任何值时,richtextboxex
根据所选值与数据绑定。
当我从列表框中选择一个值时,我必须突出显示绑定到richtextbox
的一些文本,例如:
只是一个友好的提醒,你有<<< OverdueInvCount>>逾期发票,逾期余额为<<< OverdueInvTotal>>。如果您对欠款有任何疑问,请致电我们,我们将很乐意与您讨论。如果您已经付款,请忽略此提醒。
所有数据都来自数据库。
我想强调<<OverdueInvCount>>
和<<OverdueInvTotal>>
这些词。
答案 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);