最近在嘗試設計一個數據查詢和數據庫信息實時提醒以及變更數據,設計界面如下:
大概就是這樣的形狀的窗體,解決的方案如下:
首先通過父窗體(Form1)中DataGridView_CellEnter調取子窗體,然後通過修改父窗體的單元格錄入數據,在子窗體中實時調取數據庫中信息,這種格式類似於醫院的藥品錄入。廢話不多說。
1、設計的時候我使用的是委託
子窗體中建立
//聲明一個委託
public delegate void DisplayUpdateDelegate(string str);
//聲明一個事件
public event DisplayUpdateDelegate showUpate;
父窗體中調取
Form2 fm = new Form2(x + dgvX, y + dgvY + hight,width, 200);//使用單元格相對座標和尺寸 來錨定子窗體
fm.Owner = this;
fm.showUpate += new Form2.DisplayUpdateDelegate(ShowMessage);
fm.Show();
值得一提的是,Form2(x + dgvX, y + dgvY + hight,width, 200)其中dgvX和dgvY是DataGridView的屏幕座標,這裏不再詳細講解如何操作了。
2、 編輯數據和接受數據
子窗體中建立接受數據屬性
public string AcceptText
{
set
{
tb.Text = value;
}
}
父窗體中建立顯示數據方法
private void ShowMessage(string str)
{
dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value = str;
}
3、實時數據變化,這裏用到的是EditingControlShowing事件和單元格數值變化事件。
4、子窗體修改數據傳回父窗體中
父窗體需要首先停止DataGridView編輯,使用DataGridView.EndEdit();
子窗體
if (showUpate != null)
{
showUpate(dataGridView1.CurrentCell.EditedFormattedValue.ToString());
}
以上就是完成實現兩窗體DataGridView數據實時傳遞,並將子窗體修改後數據傳回的主要關鍵代碼,希望有不當之處批評指正,也希望對您有所幫助。