C#으로 이해하는 자료구조 전자책
C# 초보 캠프

Day 6

윈폼(Windows Forms) 프로그램 작성

지금까지는 콘솔화면을 사용하는 프로그램 즉 콘솔 프로그램만을 사용하였다. 여기서는 윈도우즈 GUI (Graphic User Interface) 프로그램의 하나인 Windows Forms 흔히 줄여서 윈폼이라 부르는 프로그램을 작성해 보자.

실습
  1. Visual Studio를 실행한다
  2. 상단 메뉴에서 File - New - Project 메뉴를 선택한다
  3. 왼쪽 Visual C# 을 선택하고 중앙에서 Windows Forms Application을 선택한다
  4. 하단에서 프로젝트 Name을 지정하고 Location에 프로젝트가 들어갈 Folder를 정한다
  5. OK 버튼을 누르면 새로운 콘솔 프로젝트가 생성된다.
  6. 자동으로 Form1 폼 화면이 열린다. 일반적으로 왼쪽에 Toolbox 화면, 오른쪽에 Solution Explorer와 Properties 창을 열고 작업한다. 만약 해당 창이 없으면, View 메뉴에서 해당 창을 열 수 있다.
  7. Toolbox의 All Windows Forms 밑에 있는 [Button], [TextBox], [Label] 등을 끌어다 중앙의 Form1 디자인 화면에 놓으면 된다. 이때 Toolbox에 있는 것들을 컨트롤(Control)이라 부르고, Form1 화면을 폼이라 부른다. 즉, 자신이 원하는 컨트롤들을 끌어다 폼에 배치시키면 된다. 아래는 몇 개의 컨트롤들을 배치하여 로그인 화면을 만든 것이다.
  8. 폼에 배치한 각 컨트롤을 누르면, Properties 창 (혹은 속성창)에 해당 컨트롤이 가진 속성들이 표시된다. 이 속성값을 조정하면 해당 컨트롤의 모양이나 기능이 변경될 수 있다. 예를 들어, 글자 크기를 크게 하지 위해 Font 속성을 선택하여 8.25px 을 14px 로 변경할 수 있고, 글자 내용을 변경하기 위해 Text 속성값을 변경할 수 있다.
  9. 화면이 완성되었으면, 프로그램을 실행해 본다. 텍스트 박스에 값을 입력할 수 있고, 로그인 버튼을 누를 수 있다. 다면, 버튼을 눌러도 아직 아무 반응이 없게 된다.

버튼 클릭 이벤트

버튼이 눌러 지면, 버튼의 Click 이벤트가 발생한다. 컨트롤에 어떤 일이 발생하는 것을 이벤트(event)가 발생한다고 한다. 예를 들어, 사용자가 버튼을 클릭 한다던지 (Click 이벤트), 마우스를 버튼 위에 올려 놓는다던지 (Mouseover 이벤트) 하는 것들은 컨트롤의 입장에서 모두 이벤트로 취급된다. 그리고 이러한 이벤트가 발생하면 어떤 행동을 하도록 코드를 추가하게 된다. 즉, 버튼이 클릭되었을 때, 무슨 무슨 일을 해라 라고 하는 것이다.

실습

로그인 버튼이 클릭되었을 때, 사용자명과 암호를 체그해서 로그인 성공/실패를 나타내는 메시지 박스를 표시해 보자. 우선 폼 디자인화면에 있는 [로그인] 버튼을 더블클릭하면, C# 코드 화면 (이것을 Code Behind 라고 한다) 이 나타나는데, 여기서 버튼 클릭시 실행되는 C# 코드를 작성한다. 아래 예제에서, btnLogin_Click() 메서드가 바로 버튼 클릭 이벤트를 처리하는 코드이다 (이를 버튼 클릭 이벤트 핸들러라 부른다).

  using System;
  using System.Windows.Forms;

  namespace Day6
  {
      public partial class Form1 : Form
      {
          public Form1()
          {
              InitializeComponent();
          }

          private void btnLogin_Click(object sender, EventArgs e)
          {
              string loginName = txtUsername.Text;
              string password = txtPassword.Text;

              if (loginName == "admin" && password == "1234")
              {
                  MessageBox.Show("Login Success", "Success");
              }
              else
              {
                  MessageBox.Show("Access Denied", "Failure");
              }
          }
      }
  }
  • btnLogin_Click() 메서드 이외의 부분은 자동으로 생성된 코드이다.
  • 사용자명 TextBox 컨트롤의 이름은 txtUsername으로, 암호 컨트롤은 txtPassword 로 명명하였다
  • 로그인명이 admin 이고 암호가 1234면 로그인 성공으로 간주하였다
  • MessageBox.Show()는 메시지를 출력하는 코드이다. Show()의 첫번째 파라미터는 메시지를, 두번째 파라미터는 메시지박스의 제목을 나타낸다


본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.