Reputation: 1
I have a window form that contain a listbox
and some richtextboxex
. listbox
contains some values. When I select any value from listbox
, richtextboxex
bind with data according to selected value.
I have to highlight some text which is bind to richtextbox
when I select a value from listbox, e.g.:
Just a friendly reminder that you have <<OverdueInvCount>> overdue invoice(s), with an overdue balance of <<OverdueInvTotal>>. If you have any questions about the amount you owe, please give us a call and we’ll be happy to discuss it. If you’ve already sent your payment, please disregard this reminder.
All data is coming from database.
I want to highlight <<OverdueInvCount>>
and <<OverdueInvTotal>>
these words.
Upvotes: 0
Views: 1889
Reputation: 17600
One way to do that without casting to new object with functionality you want is to override 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();
}
and add this in your constructor (after InitializeComponent();
call)
listBox1.DrawMode = DrawMode.OwnerDrawFixed;
listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);
Upvotes: 0
Reputation: 65077
Something like this should work (just tested this.. seems to work fine):
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);
}
Upvotes: 0