티스토리 뷰




VB.Net 응용 프로그램을 만들기에 앞서 어떤 형태의 프로그램을 만들것인지를 결정해야 합니다. 결혼식을 진행하는 스태프를 보더라도 사람들 앞에서 사회를 보는 사람도 있지만 사람들에게 노출되지 않으면서 방송실에서 각종 장비를 다루며 원활한 예식 진행을 돕는 사람도 있고 오로지 반주만 한다던가 신부 드레스만 잡아 주는 역할만 수행하는 사람도 있는 것처럼 프로그램도 일반적인 프로그램 처럼 사용자에게 윈도우 형태로 보이는 윈도우 폼 응용(Windows Forms), 예전의 도스(DOS) 프로그램 처럼 커맨드 라인 입출력 형태로 동작하는 콘솔 응용(Console)과 함께 여러 프로그램의 부품처럼 활용할 수 있는 *.DLL을 생성하는 클래스 라이브러리 형태로 만들어 질 수 있습니다. WPF(Windows Presentation Foundation) 기반으로 응용을 제작할 수도 있지만 WPF 연관 응용은 추후에 다루기로 합니다.

 


 ※ 연관글 목록

 

 

첫 윈도우 폼 응용 만들기

 

새로운 프로젝트를 제작하기 위해서는 시작 페이지에서 "새 프로젝트"를 선택하거나 File 메뉴>New Project를 선택하거나 Ctrl+N 핫키를 통해서 프로젝트 템플릿 창을 띄웁니다.

 

템플릿은 각 응용 프로그램의 형태에 따라 기본적인 코드를 준비해 놓은 것으로 창이 있는 프로그램을 만들것이므로 Windows Form 응용을 선택합니다. 윈도우 폼 응용을 선택하면 WindowsApplication1이 기본 이름으로 나오는데 저장 디렉토리에 이미 WindowsApplication1이 존재한다면 자동으로 WindowsApplication2이 기본 이름으로 설정됩니다. 콘솔응용은 ConsoleApplication1으로 클래스 라이브러리는 ClassLibrary1이 기본 이름으로 설정되므로 위의 그림과 같이 자신의 프로젝트에 맞는 이름으로 적절하게 정의합니다. [OK]를 클릭하면 기본적인 디자인과 코드가 준비되어 아래의 그림과 같이 표시됩니다. 템플릿이 만들어준 기본 프로그램은 이 상태에서 별도의 디자인 작업이나 코드 작성이 없더라도 그대로 프로그램 실행이 가능한 상태입니다. 

 


 

상단 탭에 "[Design]"으로 표시하고 있는 공간이 비주얼스튜디오의 디자이너로 이곳에서 사용자에게 보여질 화면을 디자인합니다. 구체적인 디자인 진행은 이후에 진행하고 프로젝트를 생성한 시점에는 아직 프로젝트가 저장된 상태가 아니므로 일단 프로젝트를 저장합니다.

  

프로젝트 저장은 File>Save All 로 프로젝트를 저장합니다. 프로젝트를 저장할 폴더를 별도로 생성하고 선택하여 체계적으로 프로그램을 관리합니다. 솔루션은(Solution) 프로젝트 정보를 담는 가장 기본 파일로 확장자는 *.sln으로 생성합니다. "Save Project" 창에서 솔루션 디렉토리 생성을 체크하면 선택한 폴더(Location) 아래 솔루션용 폴더를 만들고 그 아래에 관련 파일들을 모두 저장합니다.



프로젝트를 끝낼때는 File>Close Project를 선택합니다. 

 

다시 프로젝트를 열때는 File>Open Project에서 해당 솔루션 파일(*.sln)을 선택하거나 탐색기에서 *sln을 더블클릭하여 열 수 있습니다. 그리고 시작 페이지의 최근 프로젝트 리스트에서 선택하는 방법으로 프로젝트를 다시 열수도 있습니다. 




이로써 프로젝트의 생성과 작업 종료 과정을 살펴보았는데 이제는 내가 만든 프로그램을 고객이나 많은 대중에게 배포하는 과정은 어떻게 하는 것인지 직접 맛보기를 해볼까 합니다. 아직 디자인이나 코딩을 하지 않았지만 기본 프로그램 상태로 설치프로그램을 만들고  설치 프로그램을 통해 내 프로그램이 시스템에 설치되는지 실제로 확인 및 실행해 보고프로그램 제거(Uninstall) 까지를 해봅니다.

 

배포용 설치 프로그램 제작은 File>"Publish 프로젝트명"으로 간단히 수행할 수 있습니다.



위와 같은 위저드 창이 나오면 생성할 폴더를 지정하고 Finish를 클릭하여 지정 폴더에 간단히 설치 프로그램인 setup.exe를 만들 수 있습니다.(나중에 실제로 배포할 때는 배포자나 버전, 인증 정보등의 설정이 필요합니다)


생성된 setup.exe를 실행해서 실제로 설치를 진행하면 인증 과정이 없어 경고가 나오지만 아래 그림과 같이 컴퓨터에 내 프로그램을 설치한 것과 정상적으로 실행되는 것을 확인할 수 있습니다. 프로그램 제거는 제어판>프로그램 추가/삭제에서 할 수 있습니다.



 

위의 Publish 과정은 프로젝트의 최종 단계에서 수행하는 것이고 프로그램 개발 과정에서는 Debug>Start debugging을 선택하거나 툴바의 초록색 버튼을 클릭하거나 F5를 통해서 프로그램을 실행(디버깅)할 수 있습니다.

 

이제 몇가지 컨트롤을 디자인에 추가하고 간단한 코드를 작성해 볼까 합니다.


 

폼을 디자인 상태에서(상단 탭의 "[Design]"이 표시된 상태로 우측 솔루션 창에서 *.vb를 더블 클릭하면 나옵니다) 도구(Toolbox)에 마우스를 올리면 위의 그림과 같은 컨트롤 들이 나오는데 버튼(Button)을 클릭하고 디자인 창에서 클릭하거나 툴박스에서 디자인 창으로 끌어다 놓기(Drag and Drop)하면 새로운 컨트롤을 디자인에 추가하고 디자인 창에서 옮기거나 컨트롤을 복사/붙여넣기(Ctrl+C/V로 복사하거나 Ctrl 키를 누른 상태에서  컨트롤을 끌어다 놓기)할 수 있습니다. 버튼을 생성했으면 Label 컨트롤도 디자인에 추가합니다. Label를 적절한 위치에 맞추다 보면 비주얼 스튜디오는 파란 가이드 선을 통해 컨트롤 끼리 앞쪽이나 뒤로 정렬 할 수 있도록 돕는 것을 확인 할 수 있습니다.

 


 

위와 같이 화면 디자인을 준비했으면 코드를 작성하면 되는데 특정 컨트롤의 이벤트(마우스 클릭이나 키조작, 타이머등등)에 따른 코드 작성이 대부분으로 버튼을 클릭했을 때의 동작을 코드로 작성하고 싶으면 디자인에 있는 버튼을 더블클릭하면 아래와 같이 버튼 클릭 시점의 이벤트 처리를 기술할 수 있도록 만들어 줍니다.

 


 

위의 창을 보면 코드는 상단 탭에 *.vb로 표시하지만 "[Design]" 표시가 없습니다. 또한 코드 상단에 Button1의 Click 이벤트를 처리하는 코드 블럭임을 나타내고 있는데 Button1 컨트롤의 다른 이벤트를 추가하려면 Click 이벤트가 표시된 콤보 박스를 클릭하고 다른 이벤트를 선택하면 됩니다. 또 다른 이벤트 처리 루틴 추가 방법은 아래의 그림과 같이 디자이너 창에서 특정 컨트롤을 선택한 상태에서 우측의 속성(Properties) 창을 보면 컨트롤에 접근하기 위한 이름을 비롯하여 다양한 속성을 지정할 수 있는데 상단의 번개 표시를 클릭하여 해당 컨트롤의 이벤트 리스트에서 원하는 이벤트 우측을 더블클릭하여 해당 이벤트에 대한 처리 루틴을 추가할 수 있습니다.

 

버튼 클릭 처리 루틴에는 아래와 같이 Label1 컨트롤에 텍스트를 출력하는 코드를 작성합니다.

Label1.Text = "Test OK!"

코드를 작성하다 보면 비주얼 스튜디오가 지금까지 입력한 철자를 기반으로 자동 완성 후보를 보이는데 위/아래 화살표 키로 선택한 상태에서 다음 문자를 입력하면 단어의 나머지를 입력하지 않아도 됩니다. 예를 들어 "Lab"까지만 입력 해도 자동 완성 후보 리스트에 Label1을 볼수 있는데 이때 화살표 키로 Label1을 선택하고 바로 .(period)를 입력하면 label1은 자동 완성되고 .(Period)는 Label1에 속한 속성을 리스팅하여 앞서 자동 완성 원리를 그대로 활용 할 수 있도록 합니다. 

 

코드를 작성했으면 앞서 언급한 실행 방법에 따라 프로그램을 실행시키고 버튼을 클릭해서 지정한 문자열이 표시되는지 확인하면 됩니다.

 


 

창의 우측 상단에 있는 X 아이콘을 클릭하면 첫 윈도우 폼 응용은 종료되고 IDE 화면이 다시 나옵니다. 다시 돌아보면 F5키를 클릭하여 프로그램을 실행시켰지만 정확히는 메뉴의 이름 처럼 디버깅을 시작한 것입니다. 프로그램의 실행 과정을 비주얼스튜디오가 통제할 수 있는 상태였고, 프로그램이 끝나자 다시 IDE 상태를 코드 편집 상태로 돌려 놓은 것입니다. 프로그램을 실행하다가 수정 사항이 있거나 버그를 발견하면 일단 실행중(디버깅중)이던 프로그램을 종료시켜 IDE를 편집 모드로 돌려놓고 코드를 수정해야 합니다.

 

 



댓글
댓글쓰기 폼