본문 바로가기
개발 이야기/C# 이야기

C# 자식폼 DialogResult 결과 받기

by 런던살자 2019. 6. 20.

안녕하세요 마블랑입니다.

 

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#에서는 그러한 기능이 없던거 같아 찾던중에 배우게 되었습니다.

 

자식폼의 확인 취소 기능은 변수를 통해 구분할 수도 있지만 기존에 있던 기능을 활용하는것이 에러율을 줄이고 코드도 더 단순해지므로 이러한 방법을 선호합니다. ^^

 

 

그럼 잘 활용하시기 바라며 읽어주셔서 고맙습니다~

댓글