【问题标题】:Combobox textChanged event not firing组合框 textChanged 事件未触发
【发布时间】:2011-11-16 11:04:22
【问题描述】:

我们有自定义表包含 Cust_ID、Cust_Name 等..... 对于此表,Cust_Name 不是唯一的,一个客户名称可以重复多次。

我正在从 SQL 获取数据并绑定到 ComboBox (winform)

 cmbCustomar.Datasource = GetCustomerData(_LocationID);
 cmbCustomar.DisplayMember = "Cust_Name";
 cmbCustomar.ValueMember = "Cust_ID";

这里的问题是:

客户名称:JOHN 重复 4 次,所有 Cust_ID 不同 当用户在第一个项目上选择 JOHN 时,我得到正确的“SelectedValue”

但如果用户选择第二或第三约翰 组合框项目始终默认选择第一项(名称为 JOHN) 并且 SelectedValue 总是返回第一个项目值。

我找不到哪里做错了,请提出建议。

【问题讨论】:

  • 如果您发布代码是如何访问所选值的,那么我们可以理解。您确定吗?您正在使用“SelectedValue”并正确投射它。
  • 请记住,“SelectedValueChanged”事件会在组合框被填充时触发。确保在填充组合框后订阅此事件。

标签: c# winforms combobox


【解决方案1】:

尝试更改以下属性:

cmbCustomar.DropDownStyle = DropDownList;

如果你的 ComboBox 有DropDownStyle = DropDown,那么 ComboBox 的“文本”部分会尝试匹配它可以在列表中找到的第一个项目,在这种情况下,它会忽略当前选定的项目并找到第一个“约翰”在你的名单上。

【讨论】:

  • 感谢 LarsTech,此属性更改修复了我的组合框问题。
【解决方案2】:

请记住,“SelectedValueChanged”事件会在组合框被填充时触发。确保在填充组合框之前取消订阅此事件。并在填充数据后再次订阅。

            //unsubsribe the event before populating combobox1
        this.cmbCustomar.SelectedValueChanged -= new System.EventHandler(this.cmbCustomar_SelectedValueChanged);

        cmbCustomar.Datasource = GetCustomerData(_LocationID);
        cmbCustomar.DisplayMember = "Cust_Name";
        cmbCustomar.ValueMember = "Cust_ID";

        //subscribe the event again 
        this.cmbCustomar.SelectedValueChanged += new System.EventHandler(this.cmbCustomar_SelectedValueChanged);

【讨论】:

    【解决方案3】:

    看来你对它很陌生。正如我的猜测,由于您的描述不完整,您正在尝试根据组合框的选定文本返回“选定值”。但不是这样,您必须尝试将值 a 附加到选定的文本并返回该值。一定能解决你的问题。

    希望对你有帮助。

    【讨论】:

    • 没有。问题是可重现的。试试看。
    • 什么是可重现的......请澄清。因为我理解我的解决方案应该有效的问题
    • 在表单上放置一个 ComboBox,创建一个具有 CustID 和 CustName 属性的简单 Customer 类,创建一个 List,添加 (1, "John"), (2, "John"), (3, "John"),将 ComboBox.DataSource 设置为列表,DisplayMember 设置为 CustName,ValueMember 设置为 CustID。选择列表中的 3rd John,然后再次删除列表 - 选择的是 1st John,而不是 3rd。但是请注意, SelectedIndexChanged 没有触发。真的只是显示问题。
    • @LarsTech 我无法在 VS 2010 .net 4.0 中重现这一点。在我的测试项目中,SelectedIndexChanged 正确触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多