Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - combobox aprire il menu in automatico
Forum - C# / VB.NET - combobox aprire il menu in automatico

Avatar
spiderman (Normal User)
Newbie


Messaggi: 20
Iscritto: 18/06/2008

Segnala al moderatore
Postato alle 15:13
Sabato, 12/02/2011
salve a tutti,

sapete come fare aprire una combobox in automatico quando si ci scrive sopra,facendo vedere i risultati della parola cercata?

grazie a tutti della collaborazione!

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 19:27
Sabato, 12/02/2011
Modificare a dovere le tre proprietà della combobox:
-AutoCompleteCustomSource
-AutoCompleteMode
-AutoCompleteSource

la prima è l'insieme dei risultati che vorresti mettere
la seconda è il modo con cui vegono mostrati
la terza è la sorgente del suggerimento (usa CustomSurce se riempi la 1° proprietà con i tuoi risultati)

PM Quote
Avatar
spiderman (Normal User)
Newbie


Messaggi: 20
Iscritto: 18/06/2008

Segnala al moderatore
Postato alle 20:59
Sabato, 12/02/2011
Grazieeeeeee walker93 ma tu sei un amico!:)
non lo sapevo questa cosa!
ma dimmi ma se io lo voglio collegare la combobox a una tabella tramite:

DataSource --->tabella cliente
displaymember---> cognome

è setto le proprietà

AutoCompleteMode
AutoCompleteSource

è l' AutoCompleteCustomSource lo annullo

l'oggetto combobox non funziona tu sai il perchè, cioè come posso ottenere lo stesso risultato che mi hai indicato tu con i dati all'interno di una tabella?

grazie ancora:)





PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 22:37
Sabato, 12/02/2011
Se per tabella intendi un DataGridView allora procedi come segue:
setta le proprietà della combobox
-AutoCompleteMode = (come preferisci, lo stile classico è suggest)
-AutoCompleteSource = "CustomSource"

AutoCompleteCustomSource è una collezione, pertanto possiamo aggiungergli tranquillamente i valori durante l'esecuzione del programma...

Possiamo ottenere i valori che ci interessano in questo modo:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim val As String
  2. val = DataGridView.Rows(0).Cells(0).Value


i due zeri solo gli indici rispettivamente della riga e della colonna di conseguenza se ti interessano i valori della 3° colonna userai indice 2 (ricordati che l'indice parte da 0 e non da 1) nella parentesi Cells.
in questo modo otteniamo il valore che vogliamo all'interno della tabella.
A te interessa tutta una colonna intera, di conseguenza usiamo un ciclo opportunamente posizionato per ottenere tutti i valori che ci interessano.
e li aggiungiamo alla combobox in questo modo:
Codice sorgente - presumibilmente Plain Text

  1. ComboBox1.AutoCompleteCustomSource.Add(val)


spero di essere stato chiaro

PM Quote
Avatar
spiderman (Normal User)
Newbie


Messaggi: 20
Iscritto: 18/06/2008

Segnala al moderatore
Postato alle 13:04
Domenica, 13/02/2011
la "DataGridView" è una ottima idea per popolare il "AutoCompleteCustomSource"
se la datagridview si trova nella stessa form.
Ma lo scopo è prendere i dati da una colonna della tabella di un db in sql server, quindi dovvrei fare un ciclo for o while per scansionare una intera colonna?

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 15:24
Domenica, 13/02/2011
il problema è che il controllo DataGridView ha la collezione "Cells" all'interno della collezione "Rows" ma non l'ha dentro la collezione "Columns" quindi sei costretto a usare un ciclo...
se la tabella di SQL ti permette di prendere tutta la collezione "Cells" da quella delle colonne non ci sono grossi problemi.
in ogni caso una volta capito come aggiungerle hai suggerimenti della Combobox resta solo da capire come si devono prelevare i valori dalla tabella SQL.
io non ho mai lavorato con SQL SERVER, ma credo che le informazioni per prelevare i valori dalla tabella tu le possa tranquillamente trovare on-line.

PM Quote
Avatar
spiderman (Normal User)
Newbie


Messaggi: 20
Iscritto: 18/06/2008

Segnala al moderatore
Postato alle 17:36
Giovedì, 17/02/2011
salve,

rispondo a walker93 è agli amici di questo forum con la soluzione che ho trovato grazie anche a walker93,

per trovare la colonna del database è popolare "AutoCompleteCustomSource" faccio cosi:
Codice sorgente - presumibilmente VB.NET

  1. Dim Conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("mioDataSet").ConnectionString)
  2.  
  3.  
  4.         Dim Command1 As SqlCommand = New SqlCommand("select  DESCRIZIONE  from mia_tabella", Conn)
  5.        
  6.         Conn.Open()
  7.         Dim reader1 As SqlDataReader = Command1.ExecuteReader
  8.  
  9.         Do While reader1.Read()
  10.             DESCRIZIONETextBox.AutoCompleteCustomSource.Add(reader1.GetString(0))
  11.          
  12.         Loop
  13.         reader1.Close()



praticamente nel form_load scrivo il sequente codice, che apro una conessione al db faccio una querry è con un ciclo while popolo AutoCompleteCustomSource,
alla fine mi cerca tutte le stringhe della colonna.
c'è qualcosina  di diverso!, in senso che il menu a tentina non si apre è ovvio, quindi la parola cercata non si evidenzia di blu come avviene nel menu a tentina.
Cmq in linea di massima può andare se risolvo questo piccola cosa la posto.

Ultima modifica effettuata da spiderman il 17/02/2011 alle 17:38
PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 19:22
Giovedì, 17/02/2011
Testo quotato

Postato originariamente da spiderman:
c'è qualcosina  di diverso!, in senso che il menu a tentina non si apre è ovvio, quindi la parola cercata non si evidenzia di blu come avviene nel menu a tentina.
Cmq in linea di massima può andare se risolvo questo piccola cosa la posto.



Non ho capito cosa intendi dire ma credo che si possa risolvere con la proprietà
"AutoCompleteMode", o mi sbaglio?

PM Quote
Avatar
spiderman (Normal User)
Newbie


Messaggi: 20
Iscritto: 18/06/2008

Segnala al moderatore
Postato alle 20:22
Giovedì, 17/02/2011
non si risolve.

quello che voglio dire è se tu lasci stare i settaggio delle proprietà

AutoCompleteCustomSource
AutoCompleteMode
AutoCompleteSource

è colleghi la combobox alla tabella tramite le proprietà

datasource --->miatabella_bindingsource
display member----> miacolonna

in automatica si prende i valori della colonna, se tu fai la prova a scrivere nella combobox è clicchi la freccia del menu a tendina per farla aprire noterai che la parola cercata è evidenziata di blu, quello che non avviene con "autocompletecustomsource", attenzione però sono piccolezze,
ma non tanto perchè se un cliente vuole che la parola cercata la vuole evidenziata è che si apre il menu a tendina in automatico sono guai...8-|



PM Quote