Vb.net 表单中的每个组合框上都会发生SelectedIndexChanged事件

Vb.net 表单中的每个组合框上都会发生SelectedIndexChanged事件,vb.net,combobox,Vb.net,Combobox,我正在开发VB.NET windows应用程序 我在表格上增加了三个组合框。问题是,如果我改变 一个组合框的索引,即该组合框发生SelectedIndexChanged事件 但表单上存在的每个其他组合框都会在同一时间发生SelectedIndexChanged事件 有什么问题,我很困惑,我错过了什么吗 Private Sub LoadBenNamesInComboBox() DataLoaded = False Dim oBenname As New BenDe

我正在开发VB.NET windows应用程序

我在表格上增加了三个组合框。问题是,如果我改变 一个组合框的索引,即该组合框发生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

之所以会发生这种情况,是因为您使用ComboBox数据源属性将下拉框绑定回数据源

当您在其中一个下拉列表中选择一个值时,它会自动将其他值更新为相同的值

相反,您可以将数据源设置为oBenName对象的副本或数组

e、 g.如果BenDetails是一个列表或使用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

之所以会发生这种情况,是因为您使用ComboBox数据源属性将下拉框绑定回数据源

当您在其中一个下拉列表中选择一个值时,它会自动将其他值更新为相同的值

相反,您可以将数据源设置为oBenName对象的副本或数组

e、 g.如果BenDetails是一个列表或使用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

看起来他们共享相同的
数据源
。看起来他们共享相同的
数据源