首页 新闻 会员 周边

NumericUpDown 控件数据绑定问题

0
悬赏园豆:40 [已解决问题] 解决于 2016-05-20 11:08

反序列化了一个对象,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<MetalElement>(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事件,然后再触发绑定的数据更新,要不然怎么老是会延迟更新呢?

望高人讲解,并能做到一致的更新。

Zigzag的主页 Zigzag | 初学一级 | 园豆:70
提问于:2012-12-19 16:44
< >
分享
最佳答案
0

我刚刚试了一下,我这里是可以正常绑定的,

我不知道的是你为什么在你的第二步里面绑定了两次.?是测试用的么.?

如果不是测试用的话.应该是你先绑定了 al属性,然后又清除了,然后再重新绑定的C属性...

收获园豆:40
只会造轮子 | 老鸟四级 |园豆:2274 | 2012-12-19 21:10

第二步绑定的是两个不同的numericUpDown,实际程序中绑定了16个numericUpDown,这里只写了两个。

  this.numericUpDownC.DataBindings.Clear();

是为了防止重复绑定。 先清除,再绑定。不是绑定完又清除了。

Zigzag | 园豆:70 (初学一级) | 2012-12-20 08:54

@Zigzag: 不好意思,没看清楚,但是我这里确实是可以正常绑定的,点击按钮就可以显示新的值了,

只会造轮子 | 园豆:2274 (老鸟四级) | 2012-12-20 10:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册