嗨 調用一個方法,我有2個表Form 1和FormC#從另一種形式
Form1中有一個表,並有我的記錄,並沒有用於刷新表在Form1的空白。
Form2的是我插入表單我insertig數據sqlserver.I wantto,當後,我保存窗體2記錄運行Form1中刷新無效。(當Form1中,打開窗體2)
感謝。
嗨 調用一個方法,我有2個表Form 1和FormC#從另一種形式
Form1中有一個表,並有我的記錄,並沒有用於刷新表在Form1的空白。
Form2的是我插入表單我insertig數據sqlserver.I wantto,當後,我保存窗體2記錄運行Form1中刷新無效。(當Form1中,打開窗體2)
感謝。
在Form1,當您打開窗體2,附加到窗體2 OnClose/Closed
事件,或自定義Save
事件,該事件引發時,刷新表的形式1
看到我的評論Akram的答案。這是創建內存泄漏的一種簡單方法,對於一個剛開始的.NET程序員來說並不是一個好主意。您必須確保您明確*刪除*事件處理程序,並確保子表單被處置。 – 2011-04-21 11:55:28
窗體2必須具有的實例的引用Form1上。你可以通過這個引用到窗體2插入按鈕被點擊時:
Form2 insertForm = new Form2();
//Form2.ShowDialog(Me); - Correction - 'Me' is for VB. in C# it's:
Form2.ShowDialog(this);
下一頁Form2上,您可以訪問Form1的是這樣的:
(Form1)this.Parent.RefreshTable();
調整窗體2的結構,因此需要一個額外的參數,像這樣:
...
private Form1 mainWindow;
public Form2(Form1 mainWindow)
{
this.mainWindow = mainWindow;
}
...
public void HaveSavedSql()
{
this.mainWindow.RefreshAll();
}
你應該考慮在不過看着Interfaces起來,以便您可以單獨關注。接口對很多事情都很有用!
試試這個從另一種形式調用方法:
if (System.Windows.Forms.Application.OpenForms["ParentFormName"] != null)
{
(System.Windows.Forms.Application.OpenForms["ParentFormName"] as ParentFormName).MethodName(args);
}
是否Form1中直接打開窗體2? – tomasmcguinness 2011-04-21 11:45:55
窗體2從Form1中 – deneme 2011-04-21 11:46:49
索裏打開我的英語不是很好 – deneme 2011-04-21 11:47:19