做了一个仓库选择的联动,选了仓库选其下的货区,选了货区选其下的货架分区。每个combox初始化、绑定数据是都会触发SelectIndexChanged事件,相当头疼。
后来无意中在网上看到了一种方法—— 假设combox为combox1。在绑定数据之前先combox.SelectIndexChanged-=combox_SelectIndexChanged;先把他的事件去掉。
等绑完了再combox.SelectIndexChanged+=combox_SelectIndexChanged;加上。
perfect!
不过遇到一个问题,这样不能实现联动。我要在绑定数据之后自动完成联动选择。
combox绑定数据的方法是这样的。
combox1.DataSource=datatable1; ////////再绑定数据源时会第一次触发 combox1.ValueMember=“value”; ////////再绑定数据源时会第二次触发 combox1.DisplayMember=“text”; /// 如果赋予ValueMember和DisplayMember的值一样的话则不触发,否则第三次触发。
这时触发效果才和你选择一个选项时触发的效果一样。
于是为了实现联动,我先设置ValueMember,然后combox.SelectIndexChanged+=combox_SelectIndexChanged;加上事件,再设置DisplayMember。OK,联动实现了。
combox1.SelectIndexChanged-=combox1_SelectIndexChanged;///删除事件 combox1.DataSource=datatable1; ////////再绑定数据源时会第一次触发 combox1.ValueMember=“value”; ////////再绑定数据源时会第二次触发 combox1.SelectIndexChanged+=combox1_SelectIndexChanged;////注册事件 combox1.DisplayMember=“text”; /// 如果赋予ValueMember和DisplayMember的值一样的话则不触发,否则第三次触发。