c#winform界面数据实时更新INotifyPropertyChanged
(2016-04-07 09:46:37)
标签:
c界面数据更新杂谈it |
UserControl需要放置到主窗体Form中,由于UserControl需要用到Form中的一些数据,所以建立了一个专门的Model类来保存这些数据:
using System.ComponentModel;
public class Data: INotifyPropertyChanged
通过INotifyPropertyChanged进行监视的,一旦有值发生改变,便会马上抛出通知来.
首先 Data data=new Data();
通过DataBindings将Model的DealId字段绑定到了TextBox上.
TextBox.DataBindings.Add("Text", data, "_num");
另外:在UserControl中,将这个Model中的一些字段通过DataBindings给绑定起来,由于更新过程中,有跨线程操作,所以通过Control.Invoke进行调用:
txtDaemonDealId.Invoke((Action)(() =>
{TextBox.DataBindings.Add("Text", data, "_num");}));
参数num在赋值时一般不会在主线程下,TextBox绑定肯定处于UI线程中,如果两个处理均在同一个线程中进行,肯定会发生阻塞,导致界面假死。如果从一个直接访问另外一个,肯定是要出现问题的(由于采用了INotifyPropertyChanged接口,所以Model的任何改变都会自动更新到前台UI上),所以在这里,我们要以异步方式来更新Model,让其数据的更新可以和UI进行交互.
this.Invoke((Action)(() =>
{
data._num=23;
}));
前一篇:欢迎您在新浪博客安家

加载中…