Позвольте мне попытаться описать мои проблемы самым простым способом: у меня есть combobox1 и combobox2.Я надеюсь достичь двух вещей:
Combox1 привязан к list1 (список строк).Когда пользователь выбирает элемент в списке list1, list2 (список строк) будет получен из базы данных, а выпадающий список привязывается к списку 2.
Если пользователь указывает текст1 в поле со списком1 и текст2 в поле со списком2, тогда эти два значения будут показаны в выпадающих списках независимо от связанных списков.
Поэтому я установил DropDown как dropdpwnstyle для обоих выпадающих списков.
Public Sub New(Optional ByVal text1 As String = "", Optional ByVal text2 As String = "")
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.combobox1.selectedText=text1
Me.combobox2.selectedText=text2
End Sub
Private Sub Form_Load(sender As Object, e As System.EventArgs) Handles Me.Load
BindComboBox1()
End Sub
Private Sub BindComboBox1()
'm_list1 is a list of string
combobox1.DataSource = m_list1
End Sub
Private Sub GetCombobox2()
'based on the selected item in combobox1, m_list2 which is a list of string is obtained
ComboBox2.DataSource = m_list2
End Sub
Private Sub combobox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles combobox1.SelectedIndexChanged
If combobox1.SelectedIndex <> -1 Then
GetCombobox2()
End If
End Sub
Когда яотладка, я замечаю две вещи:
После Me.combobox1.SelectedText = text1, фактически, Me.combobox1.SelectedText = "".Но Me.combobox1.Text = text1.Это потому, что combobox1.SelectedIndex = -1?
Combobox1.datasource = m_list1 изменяет combobox1.selectedindex с -1 на 0. Это вызовет событие combobox.selectedIndexchange.
Таким образом, результаты приведенного выше кода показывают, что цель 1 достигнута, а цель 2 никогда не достигнута.combobox1.selected индекс всегда равен 0, а combobox2.selected индекс тоже всегда равен 0.