【问题标题】:unlinking comboboxes from each other取消组合框彼此的链接
【发布时间】:2015-11-19 14:06:31
【问题描述】:

我的项目有 3 个组合框,它们都收集相似的数据(相同的选项,但它们会导致不同的用户选择) 我有一个由 mysql 数据填充的数据表——这个数据表链接到每个组合框。不幸的是,当您在其中一个组合框上选择一个列表项时,它会在所有 3 个组合框上选择该列表项(我不希望它这样做)

项目在加载时绑定到组合框,如下所示:

Private Sub ptnew_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ComboBox5.DataSource = insurancecompanies
    ComboBox5.DisplayMember = "IName"
    ComboBox5.ValueMember = "IID"
    ComboBox7.DataSource = insurancecompanies
    ComboBox7.DisplayMember = "IName"
    ComboBox7.ValueMember = "IID"
    ComboBox6.DataSource = insurancecompanies
    ComboBox6.DisplayMember = "IName"
    ComboBox6.ValueMember = "IID"
End Sub

如何防止这种行为发生

【问题讨论】:

  • 使用不同的数据源;在某种程度上,CBO 代表了不同的东西(发行人、承销商、再保险公司或人寿 vs 汽车 vs 家庭)。创建不同的数据源来代表它,但恰好有相同的数据(或接近它)
  • DataSource 每次在控件中进行更改时都会更改自己的 Current 值。对不同的控件使用相同的DataSource使得控件的selecteditem相同。使用@Plutonix 的建议。
  • 如果您有答案,请将其作为答案!!抱歉 - 这是一个令人讨厌的问题。

标签: vb.net winforms combobox


【解决方案1】:

克隆您的数据源,使它们成为独立的实体。

Private Sub ptnew_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ComboBox5.DataSource = insurancecompanies.Copy
    ComboBox5.DisplayMember = "IName"
    ComboBox5.ValueMember = "IID"
    ComboBox7.DataSource = insurancecompanies.Copy
    ComboBox7.DisplayMember = "IName"
    ComboBox7.ValueMember = "IID"
    ComboBox6.DataSource = insurancecompanies.Copy
    ComboBox6.DisplayMember = "IName"
    ComboBox6.ValueMember = "IID"
End Sub

编辑:将 Clone 方法更改为 Copy 以保留数据

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2013-07-30
    • 2015-01-03
    • 2023-03-29
    • 2011-05-25
    相关资源
    最近更新 更多