最近在尝试设计一个数据查询和数据库信息实时提醒以及变更数据,设计界面如下:
大概就是这样的形状的窗体,解决的方案如下:
首先通过父窗体(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数据实时传递,并将子窗体修改后数据传回的主要关键代码,希望有不当之处批评指正,也希望对您有所帮助。