본문 바로가기

IT프로그래밍/C Sharp

[C#]Timer를 사용하여 윈폼에서 시계 만들기(소스코드와 설명)

Winform_Timer_ThumNail
Winform_Timer_ThumNail

C# WINFORM에서 TIMER를 사용하여 시계 만들기

 

Timer(타이머)의 정의

Timer(타이머)는 WinForm에서 사용자가 정의한 간격마다 이벤트를 발생시키는 동작을 합니다. 여기에서 이벤트라는 것은 사용자가 실행시키라고 구현한 코드가 되겠네요. C# Timer를 활용하면 효율적인 작업 스케줄링을 구현할 수 있습니다. 

 

C# Timer의 기본 사용 방법

C# Winform Timer를 이해하기 위해서는 3가지를 알아야 합니다.

  1. Interval : 이벤트의 발생주기. Int형으로 할당. 밀리초(1000ms = 1초)
  2. Start() : 타이머를 동작시키는 함수.
  3. Stop() : 타이머의 동작을 멈추는 함수.

10분에 한번씩 알람을 울리는 프로그램을 만들고 싶다고 하면 Timer의 Interval 속성값을 6000(밀리세컨드)으로 하고 .Start() 함수를 호출하여 타이머를 시작시키기만 하면 됩니다.

 

 

C# WinForm에서 Timer를 사용하여 시계 만들어보기

C# 윈폼의 타이머를 이용해서 시계를 만드는 순서는 다음과 같습니다.

  1. Visual Studio에서 C# WinForm Project를 생성.
  2. 도구상자에서 Timer를 Form에 드래그.
  3. 생성된 Timer(timer1)의 Interval(실행간격)을 1초로 지정.
  4. 시간을 표시하기 위해, 도구상자에서 Label을 Form에 드래그.
  5. Label의 글자크기 키우기.
  6. Timer(timer1)의 이벤트 작성 : Label에 시간 표시.
  7. Form이 실행된 후 생성한 Timer(timer1)이 Start() 하기.

위의 순서대로 C# Winform에서 시계를 표시해 보겠습니다.

 

1. 비주얼 스튜디오에서 윈폼 프로젝트를 생성하기

Visual Studio 실행 후 화면
Visual Studio 실행 후 화면

※ 혹시 프로젝트를 생성하는 방법을 모른다면 아래 블로그 글을 참조해주세요.

[C#] 윈폼 프로젝트 만들기, 버튼 클릭, 텍스트 박스 출력까지

 

[C#] 윈폼 프로젝트 만들기, 버튼 클릭, 텍스트 박스 출력까지

C# Windows Form Button TextBox Click 목표 - C# 윈폼(Windows Forms) 프로젝트를 생성한다. - 컨트롤러(버튼, 텍스트박스)를 생성한다. - 버튼을 눌렀을 때 텍스트 박스에 특정 글자가 입력되도록 한다. 1. C# 윈

manniz.tistory.com

 

2. 도구상자에서 Timer를 검색한 후, Form에 드래그하기

도구상자에서 Timer를 입력하여 검색합니다.

도구상자에서 Timer 찾기
도구상자에서 Timer 찾기

검색하여 나온 Timer Component를 Form화면에 드래그합니다.

Timer를 Form에 추가하기
Timer를 Form에 추가하기

Form 화면 아래 timer1 이라고 Timer 컴포넌트가 추가된 것을 확인 할 수 있습니다.

Timer라는 컴포넌트를 끌어왔는데 timer1이라고 나온 것은 Visual Studio에서 해당 Timer의 변수명을 자동으로 지정해준 것입니다. Timer timer1 = new Timer()이 자동으로 생성되었다고 이해하시면 될 것 같습니다.

 

3. 생성된 Timer의 Interval(실행간격)을 1초로 지정하기

폼화면 아래에 있는 timer1을 클릭 하신 후, 우측하단의 속성을 클릭하면, Timer의 속성값인 Interval을 확인 할 수 있습니다.

timer1의 Interval 속성 값 확인
timer1의 Interval 속성 값 확인

Interval 속성의 기본값은 100으로 설정되어 있습니다. 주의하실 점은 이 값은 100초를 의미하는 것은 아닙니다! 100밀리세컨드를 의미하는 것으로 0.1초입니다. 1000밀리세컨드 = 1초 라는 것을 유의해주세요.

따라서 시계를 1초마다 변경시키기 위해서 Interval 값을 1000으로 설정합니다.

 

timer1의 Interval 속성 값 변경하기
timer1의 Interval 속성 값 변경하기

 

 

 

4. 시간을 표출할 Label을 Form에 추가하기

다시 도구상자를 클릭한 후, 나오는 검색창에서 label을 입력합니다.

Label 컴포넌트가 나오는 것을 볼 수 있습니다.

도구상자에서 Label 검색하기
도구상자에서 Label 검색하기

 

Label Component를 Form화면에 드래그 합니다.

Form에 Label 추가하기
Form에 Label 추가하기

폼 화면에 label1이 추가 된것을 확인 할 수 있습니다.

※ timer1은 하단에 있는데 왜 label1은 화면에 바로 나오나요? timer는 일정기간마다 이벤트를 수행하게 해주는 동작을 수행할뿐, 실제 화면에 표출되지는 않습니다. 반면 Label은 화면에 표출되어 사용자에게 보여지는 Component라고 생각하시면 될 것 같습니다.

 

5. Label의 글자 크기 키우기

label1을 클릭 한 후, 속성을 클릭하면 해당 컴포넌트의 속성값들을 볼수 있습니다. 속성창에서 아래쪽으로 이동해보면 Font라는 속성을 볼 수 있습니다.

label1의 Font속성 확인하기
label1의 Font속성 확인하기

이 Font 속성에서 Label의 글자크기 및 글꼴을 지정 할 수 있습니다.

마우스로 해당 현재 Font의 속성값인 "굴림, 9pt"를 누르면 옆에 "..." 버튼이 표출됩니다. 해당 버튼을 눌러봅시다.

label1의 Font속성 변경하기
label1의 Font속성 변경하기

 

글꼴을 지정하는 창이 열렸습니다. 여기에서 글자크기는 72, 글꼴 스타일은 굵게를 체크한 후, 확인을 눌러줍니다.

label1의 Font속성 변경하기2
label1의 Font속성 변경하기2

 

Form에 표시된 label1의 크기가 우리가 지정한 글꼴에 맞게 변경되어 커지고 Bold 해진 것을 확인 할 수 있습니다.

변경된 Font 확인하기
변경된 Font 확인하기

 

6. 타이머의 이벤트 작성하기

이제 저 label1에 시계처럼 현재 시간 표출 될 수 있도록 해보겠습니다. 다시 timer1을 클릭 한 후 속성을 누릅니다. 그리고 상단의 번개표시(이벤트)를 클릭합니다.

Timer Tick 입력하기
Timer Tick 입력하기

Tick이라는 속성이 보입니다. Tick옆의 비어있는 창을 클릭하면 키보드 입력을 할 수 있게 되어 있습니다. 해당 부분에 ClockEvent라고 입력 후 엔터를 눌러줍니다.

Timer Event 속성 버튼
Timer Event 속성 버튼

 

엔터를 누르는 순간, 갑자기 소스코드로 화면이 바뀌었을 것입니다.

생성된 Timer의 Event 확인
생성된 Timer의 Event 확인

ClockEvent에는 Timer의 Interval마다 수행되는 동작을 작성하는 곳입니다.

Interval 즉, 타이머가 동작을 수행할 간격을 우리는 위에서 1000밀리세컨드(1초)로 설정했던것 기억나시죠?

이 ClockEvent 함수에는 1초마다 수행될 동작을 작성해보도록 하겠습니다.

 

private void ClockEvent(object sender, EventArgs e)
{
	//label1의 Text에 현재시각을 표출
	label1.Text = DateTime.Now.ToString("HH:mm:ss");
}

위의 코드를 복사 후 붙여넣기 해주시기 바랍니다.

해당 코드의 의미는 우리가 Form에서 만든 label1의 Text에 현재시각을 표시하는 것입니다.

DateTime.Now는 PC의 현재시각을 반환해줍니다. Label은 String으로 Text를 받기 때문에, Tostring을 통해서 문자열로 형식을 변경시켜주는 것이고, 포맷은 "HH:mm:ss"를 사용하도록 하였습니다. 시간을 표현하는 포맷은 다음 포스팅을 통해 알려드리도록 하겠습니다. 우선은 위의 코드대로 작성해주세요.

 

 

7. Form이 실행된 후 Timer 작동시키기

이벤트 작성이 되었으니, 이제 우리가 작성한 이벤트가 실행되도록 하는 코드를 추가시키도록 합시다. Load등의 함수를 추가하여 폼이 실행된 후 추가할 수 있지만, 이 예제에서는 간단하게 Form의 컴포넌트들이 초기화 된 후, Timer를 Start하도록 해보겠습니다.

Form 프로그램 진입점
Form 프로그램 진입점

위에 표시한 부분이 Form 실행 후, Code가 진입하는 부분입니다. 컴포넌트들을 초기화 하는 함수 아래에 코드를 추가 시켜줍니다.

public Form1()
{
    InitializeComponent();
    timer1.Start();		//timer1의 이벤트를 시작시킴.
}

컴포넌트들이 초기화 된 후 timer1을 동작시킨다고 이해하시면 됩니다.

 

이제 프로젝트를 빌드한 후, 결과를 봅니다.

Timer로 현재 시간 표출 결과
Timer로 현재 시간 표출 결과

 

1초 간격으로 label에 현재시각을 표출해주는 것을 볼 수 있습니다.

 

Timer를 이용해서 시계 만들기 폼디자인과 소스 코드

폼디자인은 아래 이미지와 같습니다.

프로젝트 전체 디자인
프로젝트 전체 디자인

 

전체 소스코드

using System;
using System.Windows.Forms;

namespace TimerEx
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Start();
        }

        private void ClockEvent(object sender, EventArgs e)
        {
            label1.Text = DateTime.Now.ToString("HH:mm:ss");
        }
    }
}

 

결론

C# Winform에서 Timer(타이머)를 사용하여 시계를 만드는 방법에 대해 알아보았습니다.

Timer는 사용자가 지정한 간격마다 지정한 동작을 수행하는 것 이라고 정리하면 좋을 것 같습니다.

이를 기반으로 보다 복잡하고 다양한 기능을 추가하여 시계뿐만 아니라, 원하시는 것들을 구현하실 수 있을 것입니다.

포스팅을 읽어주셔서 감사합니다.