ciao,
si, il motivo di avere un object come item sta nel fatto che la combo rappresenta una lista selezionabile di oggetti, tipicamente di classi tue che rappresentano qualcosa.
Tipicamente sarebbe da usare in combinata con "DisplayMember" e "ValueMember" che sono le proprietà della collezione sottostante impostata nella proprietà "DataSource".
Ti faccio un esempio classico:
List<Articolo> lista = ArticoloManager.GetAll();
comboBox1.DataSource = lista;
comboBox1.DisplayMember = "Descrizione";
comboBox1.ValueMember = "Codice";
dove Articolo è appunto una classe:
public class Articolo
{
public int ID { get; set; }
public string Codice { get; set; }
public string Descrizione { get; set; }
public DateTime Data { get; set; }
}
che viene riempita leggendo dal database, e viene scritta sul db quando è il momento di salvare, mappando i campi (sia lodato Linq )
Quando devi prederti i dati scelti dalla combo, ti basta un codice di questo tipo:
Articolo articolo = comboBox1.SelectedItem as Articolo;
if (articolo != null) //--- se ha scelto qualcosa
{
...
}
Questo approccio, ti aiuta moltissimo, perchè spesso hai bisogno di avere altre proprietà dell'elemento selezionato, non ti basta l'id, perchè magari ti tocca rifare la query per leggerle etc...se invece lavori ad oggetti, vai via tranquillo perchè quello che ti serve lo puoi agganciare alla combo e poi recuperarlo.
Quindi ti consiglio vivamente questo approccio, anche se più laborioso all'inizio (farti le classi etc...) ti porta assoluti benefici in futuro nella manutentezione, implementazione, design dell'applicazione..assolutamente da farlo diventare "il modo" di programmare.
La cosa vale anche se hai DataTable al posto della tua List<T>, puoi passarla come datasource alla combo, e scegliere le 2 colonne che ti interessa visualizzare/utlizzare.
Ovvio che si può usare anche qualcosa di semplice come la sola stringa, ma diciamo che per "coprire" un'ampia gamma di casistiche, l'item della griglia è obbligatoriamente object.
ps: ho fatto un "volo pindarico" ma ci vorrebbero delle applicazioni reali per capirne il beneficio, cmq spero di averti almeno dato un possibile intuizione per progettare la tua applicazione, anche perchè la stessa cosa vale per la listbox etc...
ciao.
Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo