2015-02-07 4 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

양식에 대한 이벤트에서 Loook을 사용하면 닫는 것과 같은 것이 보일 것입니다. – Kevin

+0

"양식이 닫힌 C#"을 온라인으로 검색하려고했지만 아무 것도 유용하지 않았습니까? –

+1

'ShowDialog'는 * 모달 * 대화 상자를 보여줍니다. 그 다음 줄을 "할"수 있습니다. –

답변

3

, 그래서 코드 : 당신은 윈폼을 사용하는 경우

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"); 
} 
+0

Nadia의 답을 덧붙이면,'User_Modication'에'DialogResult'을 설정하고 그 값을'ShowDialog()'호출의 반환 값으로 잡을 수 있습니다. 이것은 성공/실패 플래그로 사용되어 다른 일을 할 수 있습니다. 적절하게'OK' 또는'Cancel'을 반환하십시오 ... –

1

당신이보고 싶을거야 이벤트 :

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

Form.FormClosed : https://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

'. 닫힘 '은 쓸모없는 이벤트입니다. .NET 2.0은'.FormClosed'를 도입했는데, 이제는 사용해야합니다. –

+0

감사합니다. 예제를 업데이트 해 드리겠습니다. – saegeoff

1

당신은 첨부해야 핸들러 이벤트 FormClosed에 : 당신은 ShowDialog을 사용하고

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

당신은 OnFormClosing 이벤트를 재정의 할 수 있습니다 대화 상자를 닫을 때까지 다음은 실행되지 않습니다. mod.ShowDialog(); doStuff(); 꽤 잘 작동합니다.

+0

OnFormClosing의 비헤이비어를 명시 적으로 재정의해야하는 경우가 아니면 이벤트에 가입하는 것이 더 좋습니다. 두 가지 목적은 두 핸들러 여야합니다. – saegeoff