Oppure

Loading
08/02/18 13:01
ivanpro
Nei ComboBox impostati con DropDownStyle=DropDown quando si digita del testo vengo filtrati alcuni valori presenti nella combo, i DropDownItems. Come faccio a sapere quanti DropDownItems compaiono nella tendina del ComboBox? E come faccio a selezionare da codice uno di questi valori?
Ho questo problema da risolvere: quando i DropDownItems sono 1, cioè quando viene proposto all'utente un solo valore, automaticamente il testo della ComboBox deve essere quel unico valore proposto nel DropDownItems.
Spero di essermi spiegato bene.

Qualcuno ha idee? Grazie
Ivan
aaa
08/02/18 15:16
Mikelius
Ti serve sapere il numero di items nella comboBox?

Esiste la proprietà comboBox1.Items.Count
da li potresti ricavarti il numero degli items e se è uguale a 1 impostare il testo come l'unico elemento

aaa
09/02/18 9:56
ivanpro
No, era troppo semplice. Mi serve conoscere il numero degli items del DropDownItems, che non ha la proprietà Count.
Sono quelli mostrati nella ComboBox dell'immagine in allegato che ha come

comboBox1.Items.Count = 6
(1 Barca, 2 Borsa, 3 Bosco, 4 Nave, 5 Cabina, 6 Casa)

Faccio un esempio: se entro nella ComboBox e digito una "c", la ComboBox mi mostra due valori "Cabina" e "Casa". A me serve conoscere questo "items.count" che è 2.
aaa
09/02/18 10:20
Mikelius
Forse ci sarà un metodo migliore, ma quello che mi viene in mente e di utilizzare un foreach()

- confronti la stringa scritta (tramite l'evento TextChanged) con gli Items (o più giustamente , con la parte iniziale del item)
e conti quelli il cui confronto va bene

Appena riesco ti faccio come avevo idea di farlo
aaa
09/02/18 12:27
ivanpro
Si ho capito dovrebbe funzionare. Ti faccio sapere appena ho risolto.
Grazie
aaa
09/02/18 13:50
Mikelius
Ecco più o meno come avrei fatto io, non l'ho testato a fondo.
devi inserire cosa fare quando il count è 1 (


            String testo = comboBox1.Text.ToString();
            int lunghezza = testo.Length;
            int count=0;
            foreach (string item in comboBox1.Items)
            {
 // la prima parte della condizione serve se inserisci nella comboBox una stringa più lunga di quelle presenti, senza da errore 
                if (lunghezza<=item.Length && String.Equals(item.Substring(0,lunghezza), testo))
                    count++;
// La label è per me per verificare che fosse tutto ok.
                label1.Text = count.ToString();
            }


Ovviamente , qualsiasi cosa utilizzi per il conteggio (io ho utilizzato una label tanto per ) ricordati di inizializzarla
Ultima modifica effettuata da Mikelius 09/02/18 13:58
aaa