Veramente... il tuo codice non è proprio... da manuale.
1° all'utente non gliene importa di vedere l'ID del cliente, anzi lo disturba perchè
2° quando vorrà cercare il cliente non potrà farlo digitando i caratteri del nome .
3° per recuperare gli ID sei costretto ad usare codice 'a la VB6'
DotNET mette a disposizione strumenti potenti, ad esempio:
Prima di tutto ti crei una classe Elemento con gli elementi che ti servono (in questo caso ID e Descrizione) che puoi 'associare' al Combobox:
codice:
Public Class Elemento
Public Property ID As Integer
Public Property Descrizione As String
Sub New(ByVal id As Integer, ByVal descrizione As String)
Me.ID = id
Me.Descrizione = descrizione
End Sub
Public Overrides Function ToString() As String
Return Me.Descrizione
End Function
End Class
Nota che la classe Elemento potrai utilizzarla per qualsiasi altra tabella dato che ID e Descrizione sono piuttosto comuni a molte tabelle (ad es. Articoli, Pagamenti, CodiciIVA, etc.) e non c'è limite al numero di colonne associabili ad ogni elemento!
Ora non ti resta che sfruttare la classe Elemento al tuo scopo.
Nota: senza aggiungere alcuna riga di codice al caricamento del tuo reader, infatti ora tu stai facendo così:
codice:
ComboSettori.Items.Add(dr(0))
Bene, ora supponiamo di voler prelevare le informazioni da 3 campi: IDCliente, Cognome e Nome e gli ultimi 2 li vogliamo visualizzare insieme nel combobox.
E' sufficiente fare così:
codice:
While dr.Read()
ComboSettori.Items.Add(New Elemento(ID:=dr(0), Descrizione:=dr(1) + " " + dr(2)))
End While
Infine, per conoscere l'ID dell'elemento selezionato (ad esempio in un Label) userai l'evento:
codice:
Private Sub ComboSettori_SelectedValueChanged(...)
If ComboSettori.SelectedIndex > -1 Then
lblIDScelto.Text = "ID = " + CType(ComboSettori.SelectedItem, Elemento).ID.ToString()
End If
End Sub