본문 바로가기

Programing/닷넷

[WinForm] Show와 ShowDialog와 차이

회사에서 업무일지를 웹 서버에 매일 업데이트를 하고 있었다.
동적으로 웹 페이지를 만드는 것이 정석이겠지만, DB가 워낙 복잡하게 되어있었고 나의 역할이 아니었기에 매일 메일로 날라오는 HTML 형태의 메일을 복사해서 FTP를 이용해서 올리고 있었다.

그러다가 불편해서 웹에 올리는 것을 해주는 프로그램을 만들었다.
빠르고 쉽게 만들기 위해서 닷넷의 윈폼을 사용하였다.
프로그램은 아래와 같다.

HTML 내용을 복사해서 붙여놓은 다음에 "올리기"버튼을 누르면 FTP를 이용해서 파일을 올리고, 완료가 되면 메시지 창을 띄워 웹 서버의 경로를 링크로 제공하는 것.

그런데 단순히 MessageBox.Show에는 링크가 없기 때문에 또 다른 윈폼을 이용해서 커스텀 메시지박스를 만들었다.
그리고 띄우는 창이 부모의 가운데에서 뜨도록 속성에서 옵션 지정을 했다. (StartPosition: CenterParent)

그런데 예상과 달리 새로 뜨는 메시지창이 부모의 위치 이외에서 뜨는 것이었다.
코드는 아래와 같았다.

MessageForm f = new MessageForm();
f.labelMsg.Text = text;
f.linkLabelURL.Text = link;
f.Show ();

원인은 Show() 메소드를 썼기 때문이다. 다이얼로그를 띄워줄 때 ShowDialog()를 써야지 지정한 속성대로 동작함을 알았다.

MessageForm f = new MessageForm();
f.labelMsg.Text = text;
f.linkLabelURL.Text = link;
f.ShowDialog();