안녕하세요. 언제나 휴일에 언휴예요.
Windows Forms 프로그래밍 실습 강의 “WinForm with C#”을 시작할게요.
첫 번째 실습은 Form 배경색을 Toggle하는 응용입니다.
1. Windows Forms 응용 만들기 2. Form 속성 설정하기 Form의 Text 속성 3. Form 이벤트 핸들러 만들기 Form의 Load 이벤트 핸들러 Form의 MouseClick 이벤트 핸들러 4. 소스 코드 구현 이벤트 핸들러 구현 배경 색 Toggle 변경 메서드 구현
1. Windows Forms 응용 만들기
첫 번째 실습이죠. Visual Studio를 실행한 이후에 만드는 과정을 소개할게요.
이 강의에서 사용할 개발 환경은 Visual Studio 2019입니다.
버전이 차이가 있다고 하더라도 프로젝트 생성 이후에는 큰 차이가 없을 거예요.
첫 화면에서 새 프로젝트 만들기를 선택하세요.
새 프로젝트 만들기 창이 뜨면 언어는 C#, 플랫폼은 Windows, 템플릿은 데스크톱을 선택하세요.
프로젝트 템플릿 유형 중에서 Windows Forms 앱(.NET Framework)를 선택하고 다음 버튼을 클릭합니다.
새 프로젝트 구성 창에서 작업 폴더 위치를 설정하고 솔루션 이름과 프로젝트 이름을 결정합니다.
하나의 솔루션에 여러 개의 프로젝트를 만들 계획이면 솔루션 이름을 별도로 입력하여 만들 수 있어요.
여기에서는 프로젝트 이름을 입력한 후 만들기 버튼을 클릭할게요.
Visual Studio 마법사에 의해 프로젝트가 만들어졌죠.
이제 디자인 창에서 마우스 우측 버튼을 클릭하세요.
이 때 나오는 메뉴를 컨텍스트 메뉴라고 부릅니다.
컨텍스트 메뉴에서 속성을 선택하세요.
속성 창에 콤보 박스 밑에 툴 바에 다섯 개의 이미지 버튼 중에 4개의 버튼을 사용합니다.
순서에 따라 항목 별 보기(1), 알파벳 순으로 보기(2), 속성(3), 이벤트(4) 입니다.
1과 2는 항목을 보여주는 순서를 선택하는 것입니다.
중요한 것은 속성을 볼 것인지 이벤트를 볼 것인지 결정하는 것이죠.
2. Form 속성 설정하기
속성에서 Text 값을 변경하세요. Form의 Text는 타이틀 바의 내용입니다.
폼이나 컨트롤의 속성은 소스 코드에서도 설정하거나 값을 가져오기 할 수 있어요.
3. Form 이벤트 핸들러 만들기
Form이 생성하고 나서 Load 시점에 해야 할 일이 있으면 Load 이벤트 핸들러에서 작업합니다.
이번 프로그램에서는 초기 Toggle 값에 맞게 배경 색을 설정하는 작업을 할 거예요.
Form의 Load 이벤트 핸들러를 등록하세요.
마우스 왼쪽 버튼을 클릭할 때마다 배경 색을 Toggle 하는 작업을 할 거예요.
이를 위해 Form1의 MouseClick 이벤트 핸들러를 등록하세요.
4. 소스 코드 구현
이제 Form1.cs 파일로 가서 코드를 구현합시다.
toggle 상태를 기억할 멤버 필드를 선언하세요.
Form1의 Load 이벤트 핸들러에서는 toggle 상태에 따라 배경 색을 변경하는 메서드를 호출합니다.
물론 배경 색을 변경하는 메서드는 만들게요.
bool toggle; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ChangeBackColor(); } private void ChangeBackColor() { if(toggle) { BackColor = Color.Red; } else { BackColor = Color.Blue; } }
마우스 클릭 이벤트 핸들러를 구현합시다.
누른 버튼이 왼쪽 버튼일 때 toggle 값을 변경한 후에 배경 색을 바꾸는 메서드를 호출합니다.
toggle할 때 XOR 연산을 사용하면 쉽게 toggle 할 수 있어요.
private void Form1_MouseClick(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { toggle ^= true; ChangeBackColor(); } }
다음은 전체 소스 코드입니다.
using System; using System.Drawing; using System.Windows.Forms; namespace 배경_색_토글 { public partial class Form1 : Form { bool toggle; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ChangeBackColor(); } private void ChangeBackColor() { if(toggle) { BackColor = Color.Red; } else { BackColor = Color.Blue; } } private void Form1_MouseClick(object sender, MouseEventArgs e) { if(e.Button == MouseButtons.Left) { toggle ^= true; ChangeBackColor(); } } } }