2012-07-09 20 views
0

我在C#項目上工作如何使用BackgroundWorker加載DataGridView

在我的項目中我有2個窗口窗體(窗體A和窗體B)。和形式A是形式B的父。 此外,我有一個DataGridView在窗體A和一個形式B上的按鈕。

當此按鈕單擊(在窗體B中)。 FormA中的DataGridView必須重新加載。爲此,我做的表格B和呼叫LoadDataGridview方法一個BackgroundWorker從形式A.

但我的問題是:

有時(並不總是)按鈕時點擊了我給一個問題(空物體)和datagridview的行消失和直徑中可見的2條紅線。

我LoadDataGridview方法是這樣的:

public void LoadDataGridview() 
{ 

MyMethod.DGV.SaveDataGridViewMetaData(dgvPersons); 


     objDataViewPersons = SqlServerDB.SqlMethod.GetContentOfTableWithDataView("Persons"); 

     objDataViewPersons.Table.Columns.Add("Department2", typeof(string));    

     if (objDataViewPersons.Table.Rows.Count == 0) 
     { 
      btnEditPerson.Enabled = false; 
      btnLastPerson.Enabled = false; 
      btnShow.Enabled = false; 
      btnPrint.Enabled = false; 
     } 

     foreach (DataRow drcurrent in objDataViewPersons.Table.Rows) 
     { 
      drcurrent["Department2"] = GlobalVar.CmbControl.GetNam(ComboBoxControl.ListName.Department, ComboBoxControl.ListInput.ID, drcurrent["Department"].ToString()); 
     } 

     objBindingSource.DataSource = objDataViewPersons; 

     MyMethod.DGV.RestoreDataGridViewMetaData(dgvPersons); 
    } 

如何刷新DataGridView的快速無誤?

回答

0

我會研究創建用戶控件。

用戶控件是一種製作自定義,可重用組件的方法。用戶控件可以包含其他控件,但必須由表單託管。

因此,通過這樣做,您可以創建單獨的控件來管理每個數據網格。

檢查出此鏈接它們是如何和什麼用於: -

http://msdn.microsoft.com/en-us/library/aa302342.aspx