我正在研究VB.NET windows应用程序。
我在表单上添加了三个组合框。问题是,如果我改变 one-combo-box的索引,即该组合框发生SelectedIndexChanged事件,
但同时SelectedIndexChanged事件发生在该表单上存在的每个其他组合框中。
问题是什么,我很困惑,我错过了什么?
Private Sub LoadBenNamesInComboBox()
DataLoaded = False
Dim oBenname As New BenDetails
oBenname.LoadAll()
cmbNEFTBenNames.DataSource = oBenname
cmbNEFTBenNames.DisplayMember = "NameOfBen"
cmbNEFTBenNames.ValueMember = "ID"
cmbRTGSBenNames.DataSource = oBenname
cmbRTGSBenNames.DisplayMember = "NameOfBen"
cmbRTGSBenNames.ValueMember = "ID"
cmbIMPSBen.DataSource = oBenname
cmbIMPSBen.DisplayMember = "NameOfBen"
cmbIMPSBen.ValueMember = "ID"
DataLoaded = True
End Sub
Private Sub cmbNEFTBenNames_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbNEFTBenNames.SelectedIndexChanged
End Sub
Private Sub cmbIMPSBen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbIMPSBen.SelectedIndexChanged
End Sub
Private Sub cmbRTGSBenNames_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbRTGSBenNames.SelectedIndexChanged
End Sub
答案 0 :(得分:2)
这是因为您使用组合框数据源属性将下拉框绑定回数据源。
当您在其中一个下拉列表中选择一个值时,它会自动将其他值更新为相同的值。
相反,您可以将数据源设置为oBenName对象的副本或数组。
e.g。如果BenDetails是LIST或使用ToArray功能的东西,你可以这样做:
Private Sub LoadBenNamesInComboBox()
DataLoaded = False
Dim oBenname As New BenDetails
oBenname.LoadAll()
cmbNEFTBenNames.DataSource = oBenname.ToArray
cmbNEFTBenNames.DisplayMember = "NameOfBen"
cmbNEFTBenNames.ValueMember = "ID"
cmbRTGSBenNames.DataSource = oBenname.ToArray
cmbRTGSBenNames.DisplayMember = "NameOfBen"
cmbRTGSBenNames.ValueMember = "ID"
cmbIMPSBen.DataSource = oBenname.ToArray
cmbIMPSBen.DisplayMember = "NameOfBen"
cmbIMPSBen.ValueMember = "ID"
DataLoaded = True
End Sub