当前位置:编程学习 > C#/ASP.NET >>

求救:相互关联的2个comboBox,如何在窗口加载的时候第2个comboBox里显示第1个comboBox想对应的值

有2个comboBox,是相互关联的,选择第1个comboBox值,然后再第2个comboBox显示出相应的值,现在用SelectedIndexChanged可以实现,问题是,如何在窗口加载的时候第2个comboBox里显示的是相对应的第1个comboBox里的默认的值,我这里窗口加载的时候第1个comboBox里有值,第2个是空白的! --------------------编程问答-------------------- 写在form_load事件里面。不过你第2个是什么时候得到的值?如果你第二个在窗体加载的时候是空白的。只有给第二个赋值了之后才能关联显示么 --------------------编程问答-------------------- 刚刚测试了一下,在窗口进行加载的时候我将MessageBox.Show(comboBox1.SelectedValue.ToString());放在comboBox1_SelectedIndexChanged事件里得到的是System.Data.DataRowView

然后将MessageBox.Show(comboBox1.SelectedValue.ToString());放在from_Load里得到的才是comboBox1里的值! --------------------编程问答--------------------
引用 2 楼 lysvike 的回复:
刚刚测试了一下,在窗口进行加载的时候我将MessageBox.Show(comboBox1.SelectedValue.ToString());放在comboBox1_SelectedIndexChanged事件里得到的是System.Data.DataRowView

然后将MessageBox.Show(comboBox1.SelectedValue.ToString());放在from_……

这些事项说明什么呢?没明白 --------------------编程问答-------------------- 说明窗口加载的时候首先执行的是comboBox1_SelectedIndexChanged事件,再才是加载事件。而我的comboBox1的数据绑定时放在加载事件中的。郁闷,不知怎么搞了~ --------------------编程问答--------------------
引用 4 楼 lysvike 的回复:
说明窗口加载的时候首先执行的是comboBox1_SelectedIndexChanged事件,再才是加载事件。而我的comboBox1的数据绑定时放在加载事件中的。郁闷,不知怎么搞了~

哦。这个是当然的啊。初始化combobox的时候会触发选择变更事件。这个是系统本身引起的。就像使用datagridview的时候,在初始化datagridview的时候就会触发rowenter事件并且返回行号为 -1.这些你只能排出,因为它不是你想要的事件。所以说你在你的selectindexchange事件里面需要判断当前事件是因为什么引起的,应该可以用 combobox1.selectedindex==-1来排除系统引起的这个错误事件 --------------------编程问答-------------------- 我明白了:

问题出在comboBox1的数据绑定中
DataSource, DisplayMember, ValueMember不同顺序触发SelectedIndexChanged事件和SelectedValueChanged事件的次数不尽相同!顺序修改一下问题解决! --------------------编程问答-------------------- 既然解决了也请尽快结贴吧
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,