Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    8

    Aiuto con listbox c#

    Buongiorno mi potete dare una mano?
    Ho una listbox dove,all'interno, ho un vettore di 100 numeri casuali.
    Ho una casella di testo dove quando inserisco un numero e quando clicco il bottone "cerca" mi deve evidenziare i numeri uguali a quello scritto nella casella di testo.
    come posso fare?
    Grazie delle risposte

  2. #2

    Re: Aiuto con listbox c#

    Originariamente inviato da loca96
    Ho una listbox dove,all'interno, ho un vettore di 100 numeri casuali.
    Ho una casella di testo dove quando inserisco un numero e quando clicco il bottone "cerca" mi deve evidenziare i numeri uguali a quello scritto nella casella di testo.
    Hai sbagliato sezione. Comunque prova qualcosa del genere:

    codice:
                listBox1.SelectionMode = SelectionMode.MultiExtended;
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    listBox1.SetSelected(i, listBox1.Items[i].ToString() == textBox1.Text);
                }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    8
    mmmm non me lo evidenzia...

  4. #4

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    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
            }
        }

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    8
    Grazie mille davvero! anche se non ci ho capito dentro gran chè ma va bene proverò a capirlo... grazie ancora

  7. #7
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Originariamente inviato da loca96
    Grazie mille davvero! anche se non ci ho capito dentro gran chè ma va bene proverò a capirlo... grazie ancora
    ciao,
    se ti riferivi a me :
    Figurati
    comunque, se ti può essere d'aiuto puoi specificare cosa non hai capito.
    oltre essere d'aiuto a te potrebbe esserlo anche per gli altri. A volte capita di scrivere codice dando per scontato che sia comprensibile (come nel mio caso ora), ma solo un utente che lo legge può dire cosa non ha capito. quindi come non l'hai capito tu potrebbe non capirlo un'altro utente che leggerà in seguito, sarebbe bene specificare per evitare questo ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    8
    Ok niente alla fine ce l'ho fatta molto semplicemente con il metodo findstringexact
    Se a qualcuno puo servire è cosi :

    Creo una variabile indice int:
    int indice = 0;
    findstringexact ricerca nella listbox la stringa dove è presente la parola scritta in una textbox e 0 vuol dire che cerca la parola partendo dall'indice 0. il findstringexact restituisce l'indice della listbox dove è presente la parola,
    indice = listBox1.FindStringExact(textBox1.Text, 0);
    ora la proprietà selected index della listbox la imposto su indice.
    listBox1.SelectedIndex = indice;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.