Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - DropDownItems di una ComboBox
Forum - C# / VB.NET - DropDownItems di una ComboBox

Avatar
ivanpro (Normal User)
Newbie


Messaggi: 3
Iscritto: 08/02/2018

Segnala al moderatore
Postato alle 14:01
Giovedì, 08/02/2018
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


ivanpro ha allegato un file: Example.jpg (12645 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 451
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 16:16
Giovedì, 08/02/2018
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



"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
ivanpro (Normal User)
Newbie


Messaggi: 3
Iscritto: 08/02/2018

Segnala al moderatore
Postato alle 10:56
Venerdì, 09/02/2018
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.


ivanpro ha allegato un file: viewattachment.jpg (12645 bytes)
Clicca qui per guardare l'immagine
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 451
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 11:20
Venerdì, 09/02/2018
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


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote
Avatar
ivanpro (Normal User)
Newbie


Messaggi: 3
Iscritto: 08/02/2018

Segnala al moderatore
Postato alle 13:27
Venerdì, 09/02/2018
Si ho capito dovrebbe funzionare. Ti faccio sapere appena ho risolto.
Grazie

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 451
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 14:50
Venerdì, 09/02/2018
Ecco più o meno come avrei fatto io, non l'ho testato a fondo.
devi inserire cosa fare quando il count è 1 (


Codice sorgente - presumibilmente C#

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



Ovviamente , qualsiasi cosa utilizzi per il conteggio (io ho utilizzato una label tanto per ) ricordati di inizializzarla

Ultima modifica effettuata da Mikelius il 09/02/2018 alle 14:58


"Io ne ho viste cose che voi umani non potreste immaginarvi...."
PM Quote