NumericUpDown 控件数据绑定问题

反序列化了一个对象,this.element,然后把这个对象绑定到NumericUpDown的Value属性上,具体过程如下: 第一步,反序列化一个对象到this.element; 1 private void btnOpen_Click(object sender, EventArgs e) 2 { 3 OpenFileDialog ofd = new OpenFileDialog(); 4 ofd.Filter = "文本文件(*.txt)|*.txt|xml文件(*.xml)|*.xml|所有文件(*.*)|*.*"; 5 if (ofd.ShowDialog() == DialogResult.OK) 6 { 7 this.element = XmlHelper.DeserializeFromFile(ofd.FileName); 8 } 9 this.BindData(); 10 } 第二步,绑定属性 1 private void BindData() 2 { 3 4 this.numericUpDownAl.DataBindings.Clear(); 5 this.numericUpDownAl.DataBindings.Add("Value", this.element, "Al", true, DataSourceUpdateMode.OnPropertyChanged); 6 7 this.numericUpDownC.DataBindings.Clear(); 8 this.numericUpDownC.DataBindings.Add("Value", element, "C", true, DataSourceUpdateMode.OnPropertyChanged); 9 } 第三步,为numbericUpDown增加一个ValueChanged事件,该事件使用element执行业务计算。 1 this.numericUpDownAl.ValueChanged += new System.EventHandler(this.OnCalculate); 2 3 private void OnCalculate(object sender, EventArgs e) 4 { 5 YuHACalculator yuC = new YuHACalculator(this.element); 6 this.RunCalculate(); 7 }   现在在窗体上更改numericUpDown数据时,会发现numericUpDown的值已经改变,但是执行OnCalculate()时this.element.Al什么的,却没有改变,直到再次更改numericUpDown时this.element.Al值变成上次触发的那个值。也就是说,控件的值更新了,但绑定的实体对象的值总是会延迟更新。我在想是不是这样的,当更改numericUpDown的控件值时,先出发ValueChanged事件,然后再触发绑定的数据更新,要不然怎么老是会延迟更新呢? 望高人讲解,并能做到一致的更新。
慕田峪4524236
浏览 409回答 1
1回答

达令说

我刚刚试了一下,我这里是可以正常绑定的, 我不知道的是你为什么在你的第二步里面绑定了两次.?是测试用的么.? 如果不是测试用的话.应该是你先绑定了 al属性,然后又清除了,然后再重新绑定的C属性...
打开App,查看更多内容
随时随地看视频慕课网APP