我winform开发经验不多,现在遇到了一个让我很不能理解的东西
现有FORM1
当FORM1_load中绑定了几个COMBOX,而DISPLAYMEMEBER 和MEMBERVALUE这2个字段只是用一个类封装进去了,仅此而已,绑定完COMBOX之后FORM1_LOAD事件便结束了,可是,这时候我又进入我封装的类去重新取值去了
这是为什么,FORM1_LOAD事件结束后不是应该页面打开了么?LOAD事件后边紧接着是什么事件?例如:
FORM1_LOAD(object sender,EventArgs e)
{
IList < W_M_REPFREQ_VO > freqList =(List < W_M_REPFREQ_VO >) ComFormFunc.GetCopyList<W_M_REPFREQ_VO>(FormAccess.ReportFreqList); //就是个链表,别在意 W_M_REPFREQ_VO newFreq = new W_M_REPFREQ_VO();
newFreq.setRepfreqid("");
newFreq.setRepfreqnm("");
freqList.Insert(0, newFreq);
//开始绑定数据
this.cbx_Frequency.DataSource = freqList;
this.cbx_Frequency.ValueMember = "Repfreqid";
this.cbx_Frequency.DisplayMember = "Repfreqnm";}//运行到这个地方之后按理说应该窗口打开了吧?可是,又去W_M_REPFREQ_VO中取数据去了//封装的对象
public class W_M_REPFREQ_VO
{
private String repfreqid; public String Repfreqid
{
get { return repfreqid; } /////又回到这里取数据了
set { repfreqid = value; }
}
private String repfreqnm; public String Repfreqnm
{
get { return repfreqnm; } /////又回到这里取数据了
set { repfreqnm = value; }
}
}我问问大家这到底是什么原因,有什么原因可以引起的,当然绑定没那么简单,会绑定很多,也会有IndexChanged事件,可是我都是在this.cbx_Frequency.DataSource = freqList;绑定数据源之后才注册的事件,所以formLoad之后不会触发某个comboxIndexChanged事件
现有FORM1
当FORM1_load中绑定了几个COMBOX,而DISPLAYMEMEBER 和MEMBERVALUE这2个字段只是用一个类封装进去了,仅此而已,绑定完COMBOX之后FORM1_LOAD事件便结束了,可是,这时候我又进入我封装的类去重新取值去了
这是为什么,FORM1_LOAD事件结束后不是应该页面打开了么?LOAD事件后边紧接着是什么事件?例如:
FORM1_LOAD(object sender,EventArgs e)
{
IList < W_M_REPFREQ_VO > freqList =(List < W_M_REPFREQ_VO >) ComFormFunc.GetCopyList<W_M_REPFREQ_VO>(FormAccess.ReportFreqList); //就是个链表,别在意 W_M_REPFREQ_VO newFreq = new W_M_REPFREQ_VO();
newFreq.setRepfreqid("");
newFreq.setRepfreqnm("");
freqList.Insert(0, newFreq);
//开始绑定数据
this.cbx_Frequency.DataSource = freqList;
this.cbx_Frequency.ValueMember = "Repfreqid";
this.cbx_Frequency.DisplayMember = "Repfreqnm";}//运行到这个地方之后按理说应该窗口打开了吧?可是,又去W_M_REPFREQ_VO中取数据去了//封装的对象
public class W_M_REPFREQ_VO
{
private String repfreqid; public String Repfreqid
{
get { return repfreqid; } /////又回到这里取数据了
set { repfreqid = value; }
}
private String repfreqnm; public String Repfreqnm
{
get { return repfreqnm; } /////又回到这里取数据了
set { repfreqnm = value; }
}
}我问问大家这到底是什么原因,有什么原因可以引起的,当然绑定没那么简单,会绑定很多,也会有IndexChanged事件,可是我都是在this.cbx_Frequency.DataSource = freqList;绑定数据源之后才注册的事件,所以formLoad之后不会触发某个comboxIndexChanged事件
COMBOX 要显示的时候会根据Repfreqid去取Repfreqnm来显示
既然Repfreqid是属性,取值自然会触发get么
一次绑定,
Property 是会被读取多次,
这个原因没有详细深入考察, Property 是函数,get {
if (无)
创建;
return 值;
}这样避免一些带外负载吧.
先设置ValueMember 和DisplayMember
再绑定不就Ok啦
像你那样写,会先用datasource绑定一次,你设置ValueMember 和DisplayMember
的时候又会重新再绑一次 当然就是两次了