티스토리 뷰



윈도우 폼 응용의 특징중의 하나는 사용자와의 대화를 다양한 창을 통해서 수행한다는 점일 것입니다. 이러한 창은 개발자가 다양한 기능 제공을 위해서 제작한 것도 있지만 자주 사용하는 창은 시스템에서 기본적으로 제공하기도 합니다. 


좌측의 그림은 비주얼스튜디오의 도구 박스에서 제공하는 다양한 컨트롤로 노란색의 박스로 표시한 시스템 창을 확인할 수 있습니다. 이외에도 색상 선택을 위한 ColorDialog도 제공하고 있습니다. 도구 박스에서 제공하는 시스템 창들은 도구박스에서 디자이너 작업 공간으로 끌어다놓기(Drag & Drop)로 컨트롤을 추가하고 각 창별로 필요한 옵션을 설정하는 방법으로 간편하게 사용할 수 있습니다.

도구박스에서 제공하는 시스템 창들은 특정 기능에 특화되어 있다면 단순하게 오류 메시지나 결과 메시지를 출력하거나 간단한 내용을 입력 받는 경우를 대비한 시스템 창은 도구 박스를 통한 컨트롤 추가 과정이 필요없고 함수 호출 하듯이 편리하게 사용할 수 있습니다. 

MsgBox("메시지", 창 스타일, 제목) 함수는 간단하게 메시지를 출력할 수 있도록 VB에서 제공하는 시스템창으로 메시지를 출력하면서 사용자의 버튼 선택 결과를 받을 수도 있습니다.

창 스타일은 MsgBoxStyle 열거형으로 지정하며 여러 스타일을 "+" 연산으로 복합 지정할 수 있습니다. MsgBoxStyle 열거형의 멤버로는 AbortRetrylgnore, ApplicationModal, Critical, DefaultButton1, DefaultButton2, DefaultButton3, Exclamation, Information, MsgBoxHelp, MsgBoxRight, MsgBoxRtlReading, MsgBoxSetForeground, OKCancel, OKOnly, Question, RetryCancel, SystemModal, YesNo, YesNoCancel 등이 있는데 예를 들어 오류 메시지를 띄우면서 계속 진행할 것인지 Yes/No를 묻는 버튼을 표시하여 결과를 받으며, 메시지에 대하여 사용자가 반응할 때까지 시스템의 다른 기능들을 대기시키려면 창스타일에 MsgBoxStyle.YesNo + MsgBoxStyle.SystemModal로 파라미터를 전달하면 됩니다. 사용자의 반응 결과는 MsgBoxResult 열거형 타입으로 리턴하는데 MsgBoxResult.OK, MsgBoxResult.Cancel, MsgBoxResult.Abort, MsgBoxResult.Retry, MsgBoxResult.Ignore, MsgBoxResult.Yes, MsgBoxResult.No와 같은 결과를 통해서 사용자의 반응을 확인할 수 있습니다.


창 스타일에서 ApplicationModal은 SystemModal이 대화창에 사용자가 반응하기 까지 시스템의 다른 응용의 동작을 대기시키는 것처럼 응용 프로그램의 다른 창의 동작을 대기하도록 합니다. MsgBox 호출 결과 확인은 창 스타일에서 지정한 버튼 종류와 결과 버튼의 종류가 동일한 것인지 주의합니다. 


위의 코드는 버튼 클릭시 간단하게 메시지창을 띄우는 예제 코드로 코드에서 확인 할 수 있듯이 창 스타일과 제목은 생략할 수 있으며, 생략하면 버튼은 [OK]만 표시하고 제목은 응용의 이름을 기본값으로 표시합니다.


간편하게 메시지를 출력할 수 있는 또다른 방법은 닷넷에서 제공하는 MessageBox.Show 메소드를 사용하는 것으로 메시지, 제목, 창을 표시할 오브젝트(IWin32Window), 버튼(MessageBoxButtons), 아이콘(MessageBoxIcon), 기본 버튼(MessageBoxDefaultButton), 옵션(MessageBoxOptions), 도움말 정보 등을 다양하게 조합해서 메소드를 사용할 수 있습니다. 닷넷 프레임워크 4에는 20여가지의 서로 다른 방법으로 MessageBox.Show를 사용할 수 있습니다. MsgBox 처럼 결과값을 받을 수 있으며 리턴 타입은 DialogResult 열거형입니다. 멤버로는 Abort, Cancel, Ignore, No, None, OK, Retry, Yes등이 있습니다. 닷넷의 기능을 사용하는 MessageBox.Show()는 VB에서 기능을 제공하는 MsgBox와는 유사하면서도 약간의 차이를 보입니다. 닷넷 메소드를 사용하면 C#과 같은 다른 언어에서의 사용법도 유사해서 코드의 재사용도가 높아지는 장점이 있으므로 참고할 필요가 있습니다.


마지막으로 다룰 시스템 창은 간단한 텍스트를 입력 받을 수 있는 입력창입니다. 간단한 텍스트를 입력받기 위해서 별도의 폼을 생성할 필요 없이 InputBox 함수를 사용할 수 있습니다. InputBox("안내문구", "제목", "기본 답변", 창 가로 위치, 창 세로 위치)로 호출할 수 있고 제목 이하의 파라미터는 생략할 수 있습니다. 창의 가로/세로 위치를 생략하면 화면 중앙에 위치 시킵니다. 입력 결과는 String 타입으로 전달합니다. 아래 그림은 이름을 입력 받는 예제입니다.

InputBox("성명을 입력하세요", "사용자 정보 입력")




댓글
댓글쓰기 폼