2015-04-03 387 views
0

我正在研究一个C#项目,其中DataGridView在运行时显示在WinForm中,需要每2到3秒更新一次。每个DataGridViewDataSrouce绑定到可根据用户的操作而改变的DataSet更新DataGridView或更新绑定的DataSource?

由于我完全是C#的新手,我不知道应该如何实现GUI中窗体的实时刷新。当然,我需要多线程,以便显示的数据更新可以在后台完成,GUI不会挂起。

PS:在Qt,每个view为界,一model,我可以在不同的线程从主界面线程更新每个model以便GUI不会卡住。这是我现在正在做的。下面的示例代码。

// MainForm.cs 
public Bind() 
{ 
    dataGridView.DataSource = TableCollection.DataTable1; 
} 
public StartTimer() 
{ 
    System.Windows.Forms.Timer tdfTimer = new System.Windows.Forms.Timer(); 
    guiTimer.Tick += new EventHandler(Refresh); 
    guiTimer.Interval = 500; 
    guiTimer.Start(); 
} 
public void Refresh(object sender, EventArgs e) 
{ 
    if (backgroundwork == null) 
    { 
     backgroundwork = new BackgroundWorker(); 
     backgroundwork.DoWork += delegate(object s, DoWorkEventArgs args) { TableCollection.UpdateData(); }; 
    } 
    if (!backgroundwork.IsBusy) 
     backgroundwork.RunWorkerAsync(); 
} 

// TableCollection.cs 
class TableCollection 
{ 
    static DataTable dataTable1; 
    public DataTable1 
    { 
     get { return dataTable1; } 
    } 
    static public void UpdateData() 
    { 
     // here i update each row in dataTable1 
    } 
} 

回答

1

要经常更新的DataGridView所以你要创建的BindingSource为that.the代码看起来应该像

的BindingSource DGSource =新的BindingSource(TableCollection.DataTable1,NULL); dataGridView2.DataSource = DGSource;