【问题标题】:SelectedIndexChanged event occures on every combo box whcih in on FormSelectedIndexChanged 事件发生在 Form 上的每个组合框上
【发布时间】:2017-02-07 07:56:32
【问题描述】:

我正在开发 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

【问题讨论】:

  • 看起来他们共享同一个DataSource

标签: vb.net combobox


【解决方案1】:

这是因为您使用组合框数据源属性将下拉框绑定回数据源。

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

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

例如如果 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多