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

Rispondi quotando