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,查看更多内容