今天本人遇到一个很怪的现象:
我做的是一个winform窗体,里面有两个comboBox控件comboBox1和comboBox2,我要实现的功能是comboBox1绑定省的名称,comboBox2根据comboBox1选择的省的名称来显示对应的城市。我的做法如下:
首先窗体加载的时候,从数据库中获得省份的数据表dt,然后绑定到comboBox1,然后根据comboBox1选择的省名从数据库获取城市的DataTable,绑定到comboBox2,
紧接着给comboBox1触发SelectedIndexChanged事件,在事件里写入获取绑定comboBox2数据源的方法。但结果是:程序出错,调试了一下,发现comboBox1绑定时,也就是执行comboBox1.DataSource = dt时,程序会自动跳到comboBox1_SelectedIndexChanged事件,执行完这个事件后再执行 this.cb_dep_comboBox1.DisplayMember = "Pro_name";this.comboBox1.ValueMember = "Pro_id";相关代码如下:
public void depInfo()
{
Emp emp = new Emp();
DataTable dt = emp.getDep(); //获取省名的DataTable
this.comboBox1.DataSource = dt; this.comboBox1.DisplayMember = "Pro_name";
this.comboBox1.ValueMember = "Pro_id";
}
public void empInfo()
{
Emp emp = new Emp();
DataTable dt = emp.getEmp(this.comboBox1.SelectedValue.ToString().Trim()); //获取省对应城市名的DataTable
this.comboBox2.DataSource = dt;
this.comboBox2.DisplayMember = "city_name";
this.comboBox2.ValueMember = "city_id";
} private void Form1_Load(object sender, EventArgs e)
{
depInfo();
empInfo();
} private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
empInfo();
}
可这是为什么会出现偶说的那种情况呢 ?
真是百思不得其解啊 ,希望各位给偶一些意见或分析下原因,不胜感激啊!!!
我做的是一个winform窗体,里面有两个comboBox控件comboBox1和comboBox2,我要实现的功能是comboBox1绑定省的名称,comboBox2根据comboBox1选择的省的名称来显示对应的城市。我的做法如下:
首先窗体加载的时候,从数据库中获得省份的数据表dt,然后绑定到comboBox1,然后根据comboBox1选择的省名从数据库获取城市的DataTable,绑定到comboBox2,
紧接着给comboBox1触发SelectedIndexChanged事件,在事件里写入获取绑定comboBox2数据源的方法。但结果是:程序出错,调试了一下,发现comboBox1绑定时,也就是执行comboBox1.DataSource = dt时,程序会自动跳到comboBox1_SelectedIndexChanged事件,执行完这个事件后再执行 this.cb_dep_comboBox1.DisplayMember = "Pro_name";this.comboBox1.ValueMember = "Pro_id";相关代码如下:
public void depInfo()
{
Emp emp = new Emp();
DataTable dt = emp.getDep(); //获取省名的DataTable
this.comboBox1.DataSource = dt; this.comboBox1.DisplayMember = "Pro_name";
this.comboBox1.ValueMember = "Pro_id";
}
public void empInfo()
{
Emp emp = new Emp();
DataTable dt = emp.getEmp(this.comboBox1.SelectedValue.ToString().Trim()); //获取省对应城市名的DataTable
this.comboBox2.DataSource = dt;
this.comboBox2.DisplayMember = "city_name";
this.comboBox2.ValueMember = "city_id";
} private void Form1_Load(object sender, EventArgs e)
{
depInfo();
empInfo();
} private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
empInfo();
}
可这是为什么会出现偶说的那种情况呢 ?
真是百思不得其解啊 ,希望各位给偶一些意见或分析下原因,不胜感激啊!!!
combobox1数据绑定的时候怎么会触发comboBox1_SelectedIndexChanged事件呢?
comboBox1没赋值时第一项时null
绑定后第一项就有了值,所以触发comboBox1_SelectedIndexChanged
{
Emp emp = new Emp();
DataTable dt = emp.getDep(); //获取省名的DataTable
this.comboBox1.DataSource = dt; this.comboBox1.DisplayMember = "Pro_name";
this.comboBox1.ValueMember = "Pro_id";
this.comboBox1.SelectIndex=-1;//加上这句试试!
} 或者删除ComboBox的SelectedIndexChanged事件,在绑定之后手工注册SelectedIndexChanged事件。