[c#] Problema con switch e combobox..

martedì 16 marzo 2010 - 18.21

Pri93 Profilo | Newbie

Salve a tutti, sono un nuovo utente ma comunque ho già guardato questo forum qualche tempo e spero possiate essermi d'aiuto per risolvere un piccolo problema con uno switch...(spero soprattutto di aver beccato la sezione giustaxD)

il mio problema è il seguente:
ho una venita di stringhe inserite tutte in una combobox e fin qui nessun problema. Il mio problema viene che vorrei fargli dire che se seleziono un elemento della mia combobox mi faccia inserire in un textbox un testo che io ho già scritto, e per evitare di fare una ventina di if( ad esempio :
if(comboBox1.Text == Convert.ToString(a))
textBox1.Text = "ciao";

facendo questo metodo mi funziona anche solo che fare venti if del genere mi pare un caso eccessivo allora ho provato con lo switch anche se non è il mio forte( non l'ho mai usato..)
ho provato varie combinazioni solo che mi da due errori
1) o mi dice che c'è bisogno di una costante ( ho provato a mettere combobox1.text= a: e mi dice che è previsto un valore costante)
2) oppure mi dice che non posso fare delle conversioni( ho provato a mettere il testo della condizione dell'if dopo il case)
qualche anima gentile potrebbe spiegarmi bene la soluzione del problema?( premetto che non so neanche se il selettore va bene a me hanno detto di usare quello..)
grazie a tutti per l'attenzione!

Gho5t Profilo | Junior Member

Ti conviene o crearti un oggetto o usare un DataTable per inserire la doppia coppia di valori nella tua ComboBox...
in pratica quando carichi le stringhe nella ComboBox le inserisci, per esempio, in un DataTable, dove "Testo" sarà il testo da far visualizzare nella combobox, mentre "Valore" sarà il valore che vorrai passare alla TextBox:
DataTable dt = new DataTable(); dt.Columns.Add("Testo"); dt.Columns.Add("Valore"); DataRow riga = dt.NewRow(); riga["Testo"] = "testo"; riga["Valore"] = "valore"; dt.Rows.Add(riga); riga = dt.NewRow(); riga["Testo"] = "testo2"; riga["Valore"] = "valore2"; dt.Rows.Add(riga); riga = dt.NewRow(); riga["Testo"] = "testo3"; riga["Valore"] = "valore3"; dt.Rows.Add(riga); comboBox1.DataSource = dt; comboBox1.DisplayMember = "Testo"; comboBox1.ValueMember = "Valore"; textBox1.Text = "";

poi all'evento SelectedIndexChanged della ComboBox basta che esegui questo semplice codice:
textBox1.Text = comboBox1.SelectedValue;

dovrebbe fare al caso tuo...

Pri93 Profilo | Newbie

Grazie mille per l'aiuto! ora provo se funziona!

un ultima cosa:
un mio compagno di classe mi ha detto che nello switch dovrei mettere
string a = "ciao";
switch(combox1.text)
{
case a : textbox1.text = "testo "; break;
}
solo che quando metto a mi dice
inserire un valore costante...
qualche soluzione? ho provato di tutto a metterlo tra gli apici qualsiasi cosa solo che mi hanno detto in più persone che si dovrebbe mettere come ho messo sopra..
Grazie mille per l'aiuto e per l'eventuale aiuto di questa cosa
ciau!

Gho5t Profilo | Junior Member

invece di creare una variabile inutilmente, visto che non viene più riutilizzata, perché non metti direttamente il testo tra virgolette nel case?
switch(combox1.text) { case "ciao" : textbox1.text = "testo "; break; }
così dovrebbe funzionare... e risparmi anche l'uso di una variabile... xd

Pri93 Profilo | Newbie

Grazie Mille!!! Ora finalmente viene!!!! ho fatto come hai detto te e mi viene!!! Grazie mille per l'aiuto!!!
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5