Ho una combo chiamata ambAggregati in una form chiamata DoppiaCombo, nell'evento Form_Load aggiungo due items:
Poi ho una seconda combo, chiamata cmbEdif, che riempio associandogli come DataSource un arrayList dichiarato globalmente, quando scatta l'evento cmbAggregati_SelectedIndexChanged: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
Come si nota dal codice se ho selezionato il primo valore della cmbAggregati, l'arrEdifici assume dei valori, altrimenti altri.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
Poi nell'evento cmbEdif_SelectedIndexChanged mi faccio stampare il valore selezionato della cmbEdif:
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!!!!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

Rispondi quotando
