[카테고리:] <span>Windows Forms 응용</span>

마우스를 클릭할 때마다 배경 색상이 빨강=>파랑=>빨강=>… 순으로 바뀌는 응용 프로그램을 만들어 봅시다.

먼저 Form1 클래스의 멤버 필드로 어떤 배경색상으로 표시해야 할 지 판단하기 위한 변수를 선언합시다.

public partial class Form1 : Form
{
    bool toggle;
    public Form1()
     {
        InitializeComponent(); 
     }
}

그리고 속성 창의 이벤트 버튼을 누른 후에 Load 이벤트 핸들러를 등록하세요. 폼 개체를 생성하여 창을 띄워지면 Load 이벤트 핸들러를 수행합니다. 따라서 폼을 초기화할 작업이 있으면 Load 이벤트 핸들러를 추가하여 작업하세요.

Form1.Designer.cs 파일의 InitializeComponent 메서드를 확인하면 Load 이벤트 핸들러를 등록하는 코드가 자동으로 작성한 것을 알 수 있습니다.

private void InitializeComponent()
{
    ...중략...
    this.Load += new System.EventHandler(this.Form1_Load);
    ...중략...
}

그리고 Form1.cs 파일에는 Load 이벤트 핸들러인 Form1_Load 메서드가 만들어진 것을 볼 수 있습니다.

private void Form1_Load(object sender, System.EventArgs e)
{
}

이 프로그램에서는 폼을 Load 할 때와 마우스 클릭할 때마다 배경 색을 설정해야 합니다. 이를 위해 배경 색을 설정하는 메서드를 추가한 후에 Load 이벤트 핸들러에 이를 호출하는 코드를 추가하세요.

private void Form1_Load(object sender, System.EventArgs e)
{
    SetBackColor();
}
private void SetBackColor()
{
    if (toggle)
    {
        BackColor = Color.Blue;
    }
    else
    {
        BackColor = Color.Red;
    }
}

그리고 속성 창에 이벤트 항목 중에 MouseClick 이벤트 핸들러를 등록합니다. 마찬가지로 마법사에 의해 Form1.Designer.cs 파일의 InitializeComponent 메서드에는 이벤트 핸들러를 등록하는 코드가 자동 추가한 것을 확인할 수 있습니다.

 this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseClick);

그리고 Form1.cs 파일에 이벤트 핸들러 메서드가 만들어 진 것을 볼 수 있습니다. 여기에서는 toggle 값을 true=>false, false=>true로 변경하기 위해 ^ 연산자를 사용합시다.

private void Form1_MouseClick(object sender, MouseEventArgs e)
{
    toggle ^= true;
    SetBackColor();
}

실행하여 확인해 보면 클릭할 때마다 배경색이 바뀌는 것을 확인할 수 있습니다.

다음은 이번 실습에서 작성한 Form1.cs 소스 파일의 코드 내용입니다.

▷Form1.cs

using System.Windows.Forms;
using System.Drawing;
namespace FirstApp
{
    public partial class Form1 : Form
    {
        bool toggle;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
            SetBackColor();
        }
        private void SetBackColor()
        {
            if (toggle)
            {
                BackColor = Color.Blue;
            }
            else
            {
                BackColor = Color.Red;
            }
        }
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {            
            toggle ^= true;
            SetBackColor();
        }
    }
}

Windows Forms 응용