[英]Update DataGridView from another class
我的目的是刷新或更新從數據庫獲取數據並將其顯示給用戶的DataGridView。 該應用程序由同一個名稱空間中的幾種形式(和類)組成,在這種情況下,我指的是:
dataGridView2
Function_Map
類 Tool_Field
類,該類包含能夠向數據庫添加行的控件 我期望的是,當用戶從Tool_Field
向數據庫添加一行時,系統會自動更新Function_Map
類中的dataGridView2控件。 在我腦海里
我認為解決方案可以稱為函數
private void SetDatagrid()
{
SqlConnection conn = new SqlConnection(Settings.DataBasePath);
Settings.DBAccess.FillDataGridViewFromReg(ref table);
conn.Close();
}
因此,我在Tool_Field
聲明
public delegate void Update_Table_Delegate();
...
private void BT_ToolField_Click(object sender, EventArgs e)
{
Update_Table_Delegate Update_Table = new Update_Table_Delegate(Function_Map.SetDatagrid);
... // Add row in database
Update_Table();
...
}
發生的Error 6 It should be a reference to an object property, method, or field is not static
是Error 6 It should be a reference to an object property, method, or field is not static
。 我可以解決這個問題
Update_Table_Delegate Update_Table =
new Update_Table_Delegate(Function_RegisterMap.SetDatagrid);
與
Update_Table_Delegate Update_Table =
new Update_Table_Delegate(Function_RegisterMap.SetDatagrid2);
其中SetDatagrid2聲明為靜態,但在這種情況下,無法訪問dataGridView2。
提前致謝
我認為,您需要一個event
來更新網grid
。 在Tool_Field
類中,進行以下更改。
public delegate void Update_Table_Delegate(); //already declared
public event Update_Table_Delegate Changed; //declare event
//invoke event
public void OnChanged()
{
if(Changed != null)
Changed();
}
在BT_ToolField_Click
方法中,調用OnChanged
。
在Function_Map
類中
//put in c'tor or any appropriate place
Tool_Field.Changed += new Update_Table_Delegate(SetDatagrid);
讓我知道是否有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.