2011-04-21 168 views
2

嗨 調用一個方法,我有2個表Form 1和FormC#從另一種形式

Form1中有一個表,並有我的記錄,並沒有用於刷新表在Form1的空白。

Form2的是我插入表單我insertig數據sqlserver.I wantto,當後,我保存窗體2記錄運行Form1中刷新無效。(當Form1中,打開窗體2)

感謝。

+0

是否Form1中直接打開窗體2? – tomasmcguinness 2011-04-21 11:45:55

+0

窗體2從Form1中 – deneme 2011-04-21 11:46:49

+0

索裏打開我的英語不是很好 – deneme 2011-04-21 11:47:19

回答

0

在Form1,當您打開窗體2,附加到窗體2 OnClose/Closed事件,或自定義Save事件,該事件引發時,刷新表的形式1

+1

看到我的評論Akram的答案。這是創建內存泄漏的一種簡單方法,對於一個剛開始的.NET程序員來說並不是一個好主意。您必須確保您明確*刪除*事件處理程序,並確保子表單被處置。 – 2011-04-21 11:55:28

5

窗體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(); 
0

調整窗體2的結構,因此需要一個額外的參數,像這樣:

... 
private Form1 mainWindow; 
public Form2(Form1 mainWindow) 
{ 
    this.mainWindow = mainWindow; 
} 
... 
public void HaveSavedSql() 
{ 
    this.mainWindow.RefreshAll(); 
} 

你應該考慮在不過看着Interfaces起來,以便您可以單獨關注。接口對很多事情都很有用!

0

試試這個從另一種形式調用方法:

if (System.Windows.Forms.Application.OpenForms["ParentFormName"] != null) 
    { 
     (System.Windows.Forms.Application.OpenForms["ParentFormName"] as ParentFormName).MethodName(args); 
    }