實現兩窗體DataGridView數據實時傳遞,並將子窗體修改後數據傳回

最近在嘗試設計一個數據查詢和數據庫信息實時提醒以及變更數據,設計界面如下:

大概就是這樣的形狀的窗體,解決的方案如下:

首先通過父窗體(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數據實時傳遞,並將子窗體修改後數據傳回的主要關鍵代碼,希望有不當之處批評指正,也希望對您有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章