본문 바로가기

hayee Study/코딩_c#

[C#] show, showDialog (모달리스와 모달 차이점)

반응형

안녕하세요 hayee 입니다.

 

윈폼은 아래와 같이 모달과 모달리스로 생성할 수 있습니다. 저는 주로 알림창, 응답을 받아와야 할 경우에 모달로 생성하고 그 외에는 모달리스로 만들고 있습니다.

// 버튼 클릭 이벤트
private void btnTest_Click(object sender, EventArgs e)
{
    Form1 subfrm = new Form1();
    
    subfrm.ShowDialog(); // 모달 
    subfrm.Show();       // 모달리스
}

- ShowDialog(): 폼을 모달로 표시합니다. 또한 폼이 닫히면 DialogResult 속성을 지정하여 반환값을 지정할 수 있기 때문에 자식폼이 생성되어 있을 경우 부모 폼을 누를 수 없습니다. (자식폼에서 다른폼의 작업을 수행할 수 없다.)

 

- Show(): 폼을 모달리스로 표시합니다. (자식폼이 생성되어 있어도, 다른 폼의 작업을 수행할 수 있습니다.)


예제 소스 (1)

// 부모 폼 버튼 클릭 이벤트 함수.
private void btnTest_Click(object sender, EventArgs e)
{
    Form3 subfrm = new Form3();

    DialogResult result = subfrm.ShowDialog();
    if (result == DialogResult.OK)
    { 
        // 모달 창 닫힌 후 수행해야 할 동작들 정의 가능.
    }
}

// 자식 폼
namespace WindowsFormsApp1
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }

        // 버튼 클릭 이벤트
        private void btnOK_Click(object sender, EventArgs e)
        {
            // 폼 닫힐 때 아래의 값으로 리턴한다. (DialogResult.OK)
            this.DialogResult =  DialogResult.OK;
            this.Close();
        }
    }
}

 

ShowDialog() 폼 예시

①: 부모 폼에서 버튼 클릭 시 모달로 자식폼이 생성됩니다.

②: OK 버튼 클릭 시 자식폼이 닫힌 후 DialogResult.OK 값을 리턴합니다.

 

 

 

# 틀린 부분이 있다면 댓글 부탁드립니다. #

# 댓글 달아주시면 늦게라도 블로그 방문하도록 할게요! 감사합니다. #

728x90
반응형