2013-05-19 74 views
0

我在我的項目中有兩種形式當form2在vb.net關閉時觸發form1的事件

當我點擊Form1上的一個按鈕時,Form2打開。

我在form2上有一些文本框。

當我在該文本框中寫入一些文本時,我有一個按鈕Save。

通過單擊該保存按鈕,數據被保存到數據庫,form2關閉。因此顯示了form1。

我在form1中有一個datagridview。它具有表格中的數據,我可以從form2中保存數據。

現在的問題是,當我點擊form2上的保存按鈕時,form1中的datagridview沒有添加最後一條記錄。

這是非常期望的行爲,因爲我在form1.Load事件的datagridview中填充數據。

那麼應該使用哪個事件以便DataGridView中的數據被刷新?

我試過paint event of form1但這不起作用。

我試過form1.refresh()form2.Closing事件。

我也試過gotFocus event of form1,但它意外地崩潰了程序。

回答

1

如果可能的話,我會建議使用form2.ShowDialog打開表格,因爲這是一個阻塞呼叫而不是form2.Show

當表格2關閉時,在ShowDialog調用允許您刷新w列表後,代碼將繼續到下一行。

另一種方法是創建自己的事件:

1)定義在Form2的一個新的事件Public Event EventName()
2)使用AddHandler form2Instance.EventName, AddressOf HandlerFunctionName在形式上1掛接到事件
3)保存在窗口2使用的代碼後RaiseEvent EventName將觸發代碼

+0

感謝您的回覆。我有解決方案。當我展示form2時,我並沒有隱藏自己的form1。我在button的事件中做了form1.visible = False,並且讓它工作。 – Vishal

1

如果您需要刷新DataGridView的數據,則可以調用Form1上的刷新方法。您可以在Form1 Load上調用相同的方法來填充數據。

例如,如果你有一個名爲RefreshData()的方法可以做到這一點在關閉窗體2

Dim frm1 = CType(Form1, Application.OpenForms("Form1")) 
frm1.RefreshData() 

什麼是基礎數據源到你的DataGridView?可能有更好的選擇,但需要了解更多信息。

+0

感謝您的回覆。我有解決方案。當我展示form2時,我並沒有隱藏自己的form1。我在button的事件中做了form1.visible = False,並且讓它工作。 – Vishal

相關問題