Ciao,
immagino che con "mi deve evidenziare... " non intenda "selezionare". A te serve evidenziare l'insieme (o gli insiemi) corrispondenti al tuo criterio in modo da vederli a colpo d'occhio, giusto? e magari fare in modo che rimangano evidenziati anche se riclicchi un insieme dopo la ricerca (quindi diversamente dalla selezione), ho capito bene?
se si, dovresti ridisegnare direttamente l'insieme nel suo oggetto graphic. Una cosa del genere :
codice:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//imposto un datasource come esempio
this.listBox1.DataSource = Enumerable.Range(0, 100).ToList();
//imposto il DrawMode
this.listBox1.DrawMode = DrawMode.OwnerDrawFixed;
//aggiungo un handler
this.listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);
}
private void button1_Click(object sender, EventArgs e)
{
//invalido la listBox in modo che venga ridisegnata quando clicco il button
this.listBox1.Invalidate();
}
void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
//disegno lo sfondo
e.DrawBackground();
//imposto il colore del carattere
Brush colore = Brushes.Black;
//leggo l'insieme
string item = ((ListBox)sender).Items[e.Index].ToString();
//se l'insieme corrisponde al testo nel textbox
if (this.textBox1.Text == item)
{
//imposto un colore diverso per il carattere
colore = Brushes.Red;
//disegno un rettangolo colorato per evidenziare meglio il testo
e.Graphics.FillRectangle(Brushes.Black, e.Bounds);
}
//scrivo l'insieme
e.Graphics.DrawString(item,
e.Font, colore, e.Bounds, StringFormat.GenericDefault);
e.DrawFocusRectangle();//questo se vuoi il rettangolo alla selezione
}
}