Combobox textChanged事件未触发

时间:2011-11-16 11:04:22

标签: c# winforms combobox

我们有customar表包含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 Combobox项目它总是默认选择第一项(名称为JOHN) 并且SelectedValue总是返回第一个项目值。

我无法找到我做错的地方,请建议。

3 个答案:

答案 0 :(得分:1)

请记住,当组合框被填充时,“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);

答案 1 :(得分:0)

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

希望它有所帮助。

答案 2 :(得分:0)

尝试更改以下属性:

cmbCustomar.DropDownStyle = DropDownList;

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