Il controllo CheckedListBox è sicuramente un controllo molto utile …. Specialmente sei microsoft mettesse a disposizione di tutti le “istruzioni esatte” per utilizzarlo.
Microsoft dice di utilizzare il codice seguente per accedere ad un singolo dato di una CheckedListBox:
String s = checkedListBox1.Items[0].ToString()
“SFORTUNATAMENTE QUESTO METODO NON FUNZIONA MAI”
ritorna un errore “System.Data.DataRowView”.
Sarebbe molto interessante anche memorizzare un “identificativo” del dato (come nelle ListBox!!), … ma forse chiediamo troppo!!!
Ovviamente ognuno può inventarsi una soluzione a questo problema. Qui di seguito troverete quella che io ho adottato.
Supponiamo di voler caricare le denominazioni di 10 società dal nostro database ed i loro identificativi in modo da sapere quali vengono “chekkate” e quali no.

Definisco una struttura come segue:
Structure Dato
Friend Id as Integer
Friend Descrizione as String
Friend Selezionato as Boolean
End Structure
Ed un vettore:
Dim Lista(9) As Dato
Durante l’evento LOAD del Form carichiamo le informazioni dal database e le carichiamo anche nel vettore:
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim Query As String
Using Connessione As New SqlConnection(StringaConnessione)
Query = "SELECT TOP 10 Descrizione, Id FROM Azienda"
Dim Command As New SqlCommand(Query, Connessione)
Connessione.Open()
Dim Reader As SqlDataReader = Command.ExecuteReader()
Dim Indice As Integer = 0
While Reader.Read
CheckedListBox1.Items.Add(Reader(0).ToString, False)
Lista(Indice).Id = Reader(1).ToString
Lista(Indice).Descrizione = Reader(0).ToString
Indice = Indice + 1
End While
End Using
End Sub
Ora ho caricato nella mia CheckedListBox e nel mio vettore le informazioni utili.
A questo punto prendo in considerazione l’evento SELECTEDINDEXCHANGED della CheckedListBox e aggiungo quanto segue:
Private Sub CheckedListBox1_SelectedIndexChanged(ByVal sender As _
System.Object, ByVal e As System.EventArgs) Handles _ CheckedListBox1.SelectedIndexChanged
Lista(CheckedListBox1.SelectedIndex).Selezionato = Not _
Lista(CheckedListBox1.SelectedIndex).Selezionato
End Sub
Ora abbiamo nel vettore tutte le informazioni che ci servono.
Ciao
Ivan
?>