본문으로 바로가기
반응형

flag를 이용한 이벤트 처리

 버튼을 클릭하면 Click 이벤트가 발생하고, 이를 처리하는 이벤트 처리 메서드가 실행된다. 그런데 똑같은 버튼을 클릭할 때 실행할 내용이 다르면 어떻게 해야할까? 예를들어, 버튼 한번을 클릭하면 "Hello World!"라고 출력하고 또 한번 누르면 글이 없어지게 하고 싶으면 어떻게 해야할까?

 

 이럴 때 flag 필드를 사용하면되는데, bool형 변수 flag를 Form1 클래스에 필드로 선언하고 flag 값이 true일와 false일때 동작을 다르게 처리한다. flag필드는 한번 사용 후에는 반대값으로 바꿔준다.

 

같은 버튼을 클릭했을 때 다른 동작을 하는 이벤트를 작성해보자.

label, 버튼을 생성해주고, 버튼의 Text를 수정해주자.

 

플래그 필드 bool flag를 선언하고, 필드는 디폴트 값이 할당된다.

using System;
using System.Windows.Forms;
namespace _20200819_004
{
    public partial class Form1 : Form
    {
        public bool flag; // 디폴트는 false
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if(flag == false)
            {
                label1.Text = "Hello World!";
                flag = true;
            }
            else
            {
                label1.Text = "";
                flag = false;
            }
        }
    }
}

버튼을 클릭할 때 실행되는 메서드이며, flag가 false이면 label에 "Hello World!"라고 출력하고 flag를 true로 바꿔준다. 다시 버튼이 클릭되면 flag가 true로 바뀌어 있으므로 label의 글씨를 없애고 flag를 false로 바꿔둔다.

버튼을 클릭하면 Hello World!가 출력되고, 한번 더 누르면 사라진다

 

반응형