강좌와 팁

잘못된 메시지 박스 사용예 날짜:2021-1-19 4:41:28 조회수:14689
작성자 : 소엔
포인트 : 1580
가입일 : 2020-02-02 00:09:14
방문횟수 : 109
글 203개, 댓글 64개
소개 : SoEn 운영자입니다.
작성글 보기
쪽지 보내기
그래픽 환경에서 어떤 질문을 할 때 흔히 MessageBox를 사용하고 사용자의 응답 결과에 따라 적절한 코드를 실행합니다.

이때 리턴값을 뭘 점검할 것인가를 잘 결정해야 하는데 다음과 같이 하면 안됩니다.

if (MessageBox.Show(this, "종료하시겠습니까?", "질문", MessageBoxButtons.YesNoCancel) == DialogResult.No)
{
 return;
}

Close();

No일 때 그냥 리턴해 버리고 Yes일 때만 종료하겠다는 뜻인데요, 문제는 사용자의 답변이 Yes, No 둘만 있는게 아니라 Cancel도 있다는 점입니다.



사용자가 취소 버튼을 누르거나 Esc 버튼을 누르면 결과는 Cancel이 되며 위 코드대로라면 Yes로 취급해 버립니다.

이것은 정확하게 원하는 결과가 아니죠. 따라서 다음과 같이 코드를 작성하는 것이 옳습니다.

if (MessageBox.Show(this, "종료하시겠습니까?", "질문", MessageBoxButtons.YesNoCancel) == DialogResult.Yes)
{
 Close();
}
return;

명확하게 Yes라고 응답했을 때만 반응을 보이면 됩니다.

그렇다면 YesNo 타입으로 메시지 박스를 만들면 어떻게 될까요?

이 경우는 Cancel 버튼이 없고 타이틀 바의 X 버튼도 비활성화되고 Esc키도 동작하지 않아 어떻게 점검해도 결과가 같습니다.

역시 프레임워크는 사소한 것까지도 실수하지 않도록 잘 구성되어 있음을 알 수 있습니다.

 



개발자의 천국 SoEn

목록보기 삭제 수정 신고 스크랩


로그인하셔야 댓글을 달 수 있습니다.