Ho una combo chiamata ambAggregati in una form chiamata DoppiaCombo, nell'evento Form_Load aggiungo due items:
codice:
Private Sub DoppiaCombo_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
cmbAggregati.Items.Add("Agg_1")
cmbAggregati.Items.Add("Agg_2")
End Sub
Poi ho una seconda combo, chiamata cmbEdif, che riempio associandogli come DataSource un arrayList dichiarato globalmente, quando scatta l'evento cmbAggregati_SelectedIndexChanged:
codice:
Dim arrEdifici As New ArrayList
Private Sub cmbAggregati_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbAggregati.SelectedIndexChanged
Dim i As Integer
If cmbAggregati.SelectedIndex <> -1 Then
If cmbAggregati.SelectedIndex = 0 Then
arrEdifici.Clear()
cmbEdif.DataSource = Nothing
cmbEdif.Items.Clear()
cmbEdif.Refresh()
For i = 0 To 4
arrEdifici.Add("Edificio_" & (i + 1))
Next
cmbEdif.DataSource = arrEdifici
cmbEdif.DisplayMember = "ItemCombo"
cmbEdif.SelectedIndex = -1
End If
If cmbAggregati.SelectedIndex = 1 Then
arrEdifici.Clear()
cmbEdif.DataSource = Nothing
cmbEdif.Items.Clear()
cmbEdif.Refresh()
For i = 0 To 2
arrEdifici.Add("Edifi_" & (i + 1))
Next
cmbEdif.DataSource = arrEdifici
cmbEdif.DisplayMember = "ItemCombo"
cmbEdif.SelectedIndex = -1
End If
End If
End Sub
Come si nota dal codice se ho selezionato il primo valore della cmbAggregati, l'arrEdifici assume dei valori, altrimenti altri.
Poi nell'evento cmbEdif_SelectedIndexChanged mi faccio stampare il valore selezionato della cmbEdif:
codice:
Private Sub cmbEdif_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbEdif.SelectedIndexChanged
If cmbEdif.SelectedIndex <> -1 Then
MsgBox(cmbEdif.Items(cmbEdif.SelectedIndex).ToString)
End If
End Sub
Il problema è questo che quando nella cmbAggregati seleziono il primo valore e poi nella cmbEdifici seleziono l'items con valore edificio_4 o edificio_5 e dopo seleziono dalla cmbAggregati il secondo valore e nella cmbEdif seleziono uno dei tre valori, succede che mi fa la msgbox correttamente, ma quando esce dalla sub cmbEdif_SelectedIndexChanged mi da errore sul form dicendomi ArgumentOutOfRangeException. AIUTO!!!!