In visual studio (sto utilizzando il 2010) gli item di una listbox sono degli object, puoi quindi inserire qualsiasi oggetto desideri. Per mostrare ciò che vuoi devi fare l'override della funzione ToString() nella tua classe.
Dovrai fare qualcosa del genere:
private class MyClass
{
// property
public string Cognome { get; set; }
public string Codice { get; set; }
// override
public override string ToString()
{
return this.Cognome;
}
}
In questo modo quando aggiungi un elemento di tipo MyClass nella listbox verrà mostrato il contenuto della property Cognome della tua classe.
Per scorrere la lista e recuperare i valori desiderati ti basta scorrere tra listbox.Items:
foreach (object obj in this.listbox.Items)
{
MyClass c = (MyClass)obj;
codici += c.Codice + "-";
}