[C#] Selezionare Testo In comboBox

mercoledì 02 gennaio 2008 - 14.55

Domin Profilo | Newbie

Ciao,

Ho una combobox con molti elementi all'interno, e volevo per facilitare la ricerca, fare in modo che quando la combobox è selezionata, e premendo i tasti mi venissero filtrati i dati in base a quanto scritto.

Per farlo ho provato questo:

private void comboBoxCodice_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show("EVENTO");
}



Purtroppo non succede niente...


EDIT:


Sono riuscito a risolvere, però adesos è solto un'altro problema:


Questo è il codice:

private void textBoxFiltroCodice_KeyPress(object sender, KeyPressEventArgs e)
{
comboBoxCodice.SelectedIndex = comboBoxCodice.FindString(textBoxFiltroCodice.Text);
}


Se nella combo box ho i valori:

1
12
123
1234


Se nella textbox scrivo:

1 non viene mostrato niente
12 Mi mostra il campo 1
123 Mi mostra 12
1234 Mi mostra 123


Non riesco a capire il motivo.... è come se il tasto che inserisco me lo prenda dopo....


phomea Profilo | Newbie

ciao
allora...eh eh ti parlo da vb.net ma è uguale in sostanza

si....il motivo per cui "reagisce in ritardo" è che al momento dell'evento keypress il testo non è ancora stato cambiato...puoi ottenere il carattere corrispondente al tasto con e.keychar

quindi una soluzione può essere questa:

comboBoxcodice.SelectedIndex = comboBoxcodice.FindString(textBoxFiltroCodice.Text + e.KeyChar);

ma se cancelli poi non ti viene riconosciuto più perchè viene aggiunto il carattere corrispondente...



la soluzione migliore probabilmente è gestirlo tramite l'evento TextChanged e non KeyPress

private void textBoxFiltroCodice_TextChanged(object sender, EventArgs e)
{
comboBoxcodice.SelectedIndex = comboBoxcodice.FindString(textBoxFiltroCodice.Text);
}

così l'istruzione viene eseguita dopo che il testo è cambiato
ciao ciao

altrimenti senza usare una textbox aggiuntiva puoi settare le proprietà autocompletemode e autocompletesource sulla combobox

Domin Profilo | Newbie

Grazie mille,

mi hai elencato ogni soluzione possibile, infatti avevo appena "risolto" aggiungendo con il + il carattere inserito per ultimo, ma quando cancellavo mi dava problemi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5