日期:2014-05-19  浏览次数:20913 次

菜鸟提问~~!!!ComboBox控件如何在绑定数据源时不触发SelectIndexChanged事件?
如题~!

注意:
C#环境下winform开发~
comboBox控件选择的是DropDownList类型

部分代码:
    private   void   Frm_ruku_Load(object   sender,   System.EventArgs   e)
{
//供货单位实体绑定,数据源是一个ArrayList,其中是从数据库中查找的数据封装成的YDBLL.Entity.Info类的对象
                                                                //这里触发一次
this.CbBghsh.DataSource   =   YDBLLruku.GetAllGongHuoShang();
                                                                //这里又触发一次
this.CbBghsh.DisplayMember   =   "MingCheng ";

this.CbBghsh.ValueMember   =   "BianMa ";
                                                                ......

}

...............

private   void   CbBghsh_SelectedIndexChanged(object   sender,   System.EventArgs   e)
{
ComboBox   cb   =   (ComboBox)   sender;
if(   cb.SelectedIndex   !=   -1   )
{
                                                                      //这里,在窗体load时就会触发
                                                                      MessageBox.show(cb.SelectedValue.ToString());
                                                                }
                                        }

本来是想这个ComboBox改变时,另一个文本框的内容根据它的选项而改变,但这里在窗体Load时就会触发这个事件,这时,刚刚绑定数据源,从ComboBox.SelectedValue取出来的值显示在文本框中的是:
                    YDBLL.Entity.Info
但在窗体加载完毕之后,再选择ComboBox的项时,就能正常取出其中选择的值了~~~~

那么,如何让它在绑定数据源时不触发这个事件呢?或者有另外的思路???

------解决方案--------------------
删除ComboBox的SelectedIndexChanged事件,在绑定之后手工注册CbBghsh_SelectedIndexChanged事件。