实现两窗体DataGridView数据实时传递,并将子窗体修改后数据传回

最近在尝试设计一个数据查询和数据库信息实时提醒以及变更数据,设计界面如下:

实现两窗体DataGridView数据实时传递,并将子窗体修改后数据传回_第1张图片

大概就是这样的形状的窗体,解决的方案如下:

首先通过父窗体(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数据实时传递,并将子窗体修改后数据传回的主要关键代码,希望有不当之处批评指正,也希望对您有所帮助。

你可能感兴趣的:(编程)