私は2つのコンボボックスを持っています。combobox1のデータソースは、固定されている文字列のリストです。Combobox2のデータソースは、combobox1の選択に依存する文字列のリストになります。これは、次のような一般的なケースと非常によく似ています。最初に国を入力し、入力に応じて、2番目のコンボボックスに国内の大学のリストが表示されます。
'Change selection of first combobox
Private Sub cbxClient_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbxClient.SelectedIndexChanged
Try
If cbxClient.SelectedIndex <> -1 Then
GetAccount()
End If
Catch
Throw
End Try
End Sub
'Based on selection of first combobox, update the data sorce of second combobox
Private Sub GetAccount()
Try
m_listAccount.Clear()
Dim strClient As String = cbxClient.SelectedItem.ToString
For i As Integer = 0 To m_listDS.Count - 1
If m_listDS(i).Client.Tostring = strClient Then
m_ds = m_listDS(i)
Exit For
End If
Next
If Not m_ds Is Nothing Then
For Each row As DataRow In m_ds.Tables("Account").Rows
m_listAccount.Add(row("account").ToString)
Next
End If
cbxAccount.DataSource = m_listAccount
Catch ex As Exception
End Try
End Sub
私の問題は、m_listAccountが更新されても(正しい情報があります)、cbxAccountに表示される選択肢がm_listAccountに従って更新されない(間違った情報がある)ことです。なぜこれが起こるのかわかりません。
注:m_listAccountの古い文字列は{"old1"}(リストには1つの文字列のみ)であり、更新後、m_listAccountの文字列は{"new"}であると想定します。ブレークポイントを介して、次のようになります。
cbxAccount.DataSorce={"new"}
cbxAccount.SelectedItem={"old1"}
フォームでは、cbxAccountは「old1」文字列を示します。