vs2005 combox(winform) 绑定数据时触发SelectedIndexChanged的
今天遇到一个不小问题,vs2005里面自带的combox(winform)的问题. 问题:我将webservice发布的方法返回的数据集绑定到combox的dataSouce.然后设置这个combox的displaymenber和valuemenber. 步骤是这样: 1datatable->datasource 2.set datatalbe.字段1->displaymenber 3set datatalbe.字段2->valuemenber 这样没有问题. 但当我在combox的SelectedIndexChanged事件中写了获取当前combox的已选择的类的编号属性的时候,发现总在报错. 数据项索引小于无穷大。 经调试发现: 程序执行到步骤1时没有继续执行步骤2,而是转向触发combox的SelectedIndexChanged事件。这时的combox没有绑定完数据,自然会报错了。 解决设置一个bool类型,标志符IsBinded,在填充方法完毕后,设为true.允许SelectedIndexChanged被触发.
using
?System;
?System.Collections.Generic; ?System.ComponentModel; ?System.Data; ?System.Drawing; ?System.Text; ?System.Windows.Forms; ?SupplyProduct.WebReference; namespace ?SupplyProduct { ????public?partialclass?Form1?:?Form ????{ ????????privateint?_cityID=-1; ????????bool?_isBinded?=false?CityID ????????{ ????????????get ????????????{ ????????????????if?(_cityID?<0) ????????????????????return; ?????????????????_cityID; ????????????} ????????????set ????????????{ ????????????????_cityID??value; ????????????} ????????} ?????????IsBinded ???????? ?????????????_isBinded; ????????????} ????????????{ ????????????????_isBinded??Form1() ????????{ ????????????InitializeComponent(); ????????} ????????void?Form1_Load(object?sender,?EventArgs?e) ????????{ ????????????CityID?; ????????????BindCities(ref?cbProvince); ????????????CityID??()cbProvince.SelectedValue; ????????????BindCities(?cbCity); ????????}?BindCities(?ComboBox?combox) ????????{ ????????????WSCitiesBLL?cityAPI?new?WSCitiesBLL(); ????????????chemchina.CitiesDataTable?cities??cityAPI.GetChildCties(CityID); ????????????combox.DataSource??cities; ????????????combox.DisplayMember?"cityName; ????????????combox.ValueMember?cityID; ????????????IsBinded?true; ????????}?cbProvince_SelectedIndexChanged(?????????(IsBinded&&cbProvince.SelectedValue!=null) ????????????{ ????????????????CityID?)cbProvince.SelectedValue; ????????????????BindCities(?cbCity); ????????????} ????} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |