2015-02-07 28 views
0

我在大學,這是我的第一個(主要)項目。表單關閉時的動作c#

我正試圖在窗體關閉時執行操作。我在網上搜索時似乎沒有獲得正確的術語,或者給出的答案與我想要做的不符。

目前我聲明瞭一個類,並顯示距離 -

private void createuser_Click(object sender, EventArgs e) 
{ 
    User_Modification mod = new User_Modification("Create", "Create"); 
    mod.ShowDialog(); 
} 

我想要做的就是這一點 -

WHEN mod IS CLOSED { 
    // Do stuff 
} 
+2

在窗體的事件中查找,你應該看到關閉,關閉等事情 – Kevin 2015-02-07 21:46:53

+0

你試過在線搜索「窗體關閉C#」,你沒有得到任何有用的東西? – 2015-02-07 21:48:09

+1

'ShowDialog'顯示*模式*對話框。之後你可以開始「做東西」下一行。 – 2015-02-07 21:52:41

回答

3

您使用ShowDialog,所以代碼直到關閉對話框後才執行它。 mod.ShowDialog(); doStuff();將工作得很好。

+0

添加到Nadia的答案中,您可以在'User_Modication'中設置'DialogResult'並將該值作爲'ShowDialog()'調用的返回值進行捕獲。這可以用作成功/失敗標誌來做其他事情。酌情返回「確定」或「取消」... – 2015-02-07 23:24:56

1

你要採取一看,二事件:

Form.FormClosinghttps://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing(v=vs.110).aspx

Form.FormClosedhttps://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosed%28v=vs.110%29.aspx

第一個將允許您在表單完全關閉之前執行操作,例如取消關閉過程。第二個是如果您想在表單關閉後執行操作(可能是爲了清理資源,作爲示例),您可以使用該選項。

所以,作爲一個例子,讓我們說,你想執行操作時的形式實際上是在封閉:

// Somewhere in your code where you create the form object. 
form.FormClosed += Form_FormClosed; 

// Somewhere else in your code. 
private void Form_FormClosed(Object sender, FormClosedEventArgs e) 
{ 
    MessageBox.Show("Form closed"); 
} 
1

你需要創建一個處理程序來捕捉FormClosed事件:

在你的構造函數中做:

this.FormClosed += Form_Closed; 

然後在你的窗體的主體中添加這個方法。

private void Form_Closed(object sender, FormClosedEventArgs e) 
{ 
     // Do stuff 
} 
+0

'.Closed'是一個過時的事件。 .NET 2.0引入了'.FormClosed',這是現在應該使用的。 – 2015-02-07 21:52:30

+0

謝謝,我會更新我的例子。 – saegeoff 2015-02-07 21:52:51

1

你要重視處理程序FormClosed事件:

private void createuser_Click(object sender, EventArgs e) 
{ 
    User_Modification mod = new User_Modification("Create", "Create"); 
    mod.FormClosed += new FormClosedEventHandler(FormClosed); 
    mod.ShowDialog(); 
} 

void FormClosed(object sender, FormClosedEventArgs e) 
{ 
    MessageBox.Show("Closed"); 
} 
1

,如果你正在使用的WinForms,你可以覆蓋OnFormClosing事件:

protected override void OnFormClosing(FormClosingEventArgs e) 
    { 
     base.OnFormClosing(e); 
     // your code... 
    } 
+0

除非您需要顯式重寫OnFormClosing中的行爲,否則最好訂閱該事件。兩個目的應該是兩個處理者。 – saegeoff 2015-02-07 21:56:55