안녕하세요 마블랑입니다.
C# 에서 자식폼의 종료 결과를 받아서 부모폼에서 처리하는 방법에 대해 간단한 포스팅을 합니다.
1. 부모폼 (Form5_p)
using System;
using System.Windows.Forms;
namespace WindowsForms_Test_001
{
public partial class Form5_p : Form
{
public Form5_p()
{
InitializeComponent();
}
private void Bt_child_Click(object sender, EventArgs e)
{
Form5_c form5_c = new Form5_c(); //자식폼 표시
DialogResult result = form5_c.ShowDialog(); //자식폼 종료 결과 받기
if (result == DialogResult.OK) //확인 버튼
{
MessageBox.Show("자식폼 OK 클릭");
}
else if (result == DialogResult.Cancel) //취소 버튼
{
MessageBox.Show("자식폼 Cancel 클릭");
}
else if (result == DialogResult.Retry) //재시도 버튼
{
MessageBox.Show("자식폼 재시도 클릭");
}
}
}
}
화면에 보이는 것처럼 버튼 클릭시 자식폼을 표시하고 종료 결과를 받아 메시지 박스로 표시하는 간단한 부모폼입니다.
2. 자식폼 (Form5_c)
using System;
using System.Windows.Forms;
namespace WindowsForms_Test_001
{
public partial class Form5_c : Form
{
public Form5_c()
{
InitializeComponent();
}
private void Bt_ok_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
private void Bt_cancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
private void Bt_retry_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Retry;
this.Close();
}
}
}
자식폼 역시 어려운 내용은 없습니다. 버튼마다 해당되는 DialogResult를 설정하고 폼을 닫아주는것이 끝입니다.
DialogResult 의 결과값은 위에 구현한 3개보다 더 많이 있지만 대표적인 것들로만 샘플 코드를 작성하였습니다.
코드를 잘 활용하면 로그인이라던가 설정창 저장 또는 취소를 쉽게 구현할수 있을듯합니다.
MFC에서는 버튼에 이벤트가 있어서 처리가 확인, 취소 처리가 가능 했던거 같은데 C#에서는 그러한 기능이 없던거 같아 찾던중에 배우게 되었습니다.
자식폼의 확인 취소 기능은 변수를 통해 구분할 수도 있지만 기존에 있던 기능을 활용하는것이 에러율을 줄이고 코드도 더 단순해지므로 이러한 방법을 선호합니다. ^^
그럼 잘 활용하시기 바라며 읽어주셔서 고맙습니다~
'개발 이야기 > C# 이야기' 카테고리의 다른 글
C# 로딩화면 추가하기(Splash 구현 예제) (1) | 2019.06.21 |
---|---|
C# NotifyIcon 컨트롤을 이용한 Tray 구현하기 (0) | 2019.06.21 |
C# 부모폼과 자식폼 데이터 전달 (0) | 2019.06.20 |
C# String.Format 소수점 자리표시 (5) | 2019.06.20 |
C# Listview 컬럼형식으로 사용하기(Listview 선택) (2) | 2019.06.20 |
댓글