C# 강좌 : 제 8강 - Timer
프로젝트 구성
도구상자에서 Timer
, TextBox
, Button
, Label
, ProgressBar
을 Form1
에 생성합니다.
위 이미지와 같이 배치합니다.
도구 상자 속성
속성을 다음과 같이 설정합니다.
- Button (1번)
- Text : Send
- Button (2번)
- Text : Reset
- Label (1번)
- Text : 현재시간
- Label (2번)
- Text : 0
timer1
을 더블클릭하여 이벤트를 활성화시킵니다.
Timer 이벤트 적용
private void timer1_Tick(object sender, EventArgs e)
{
if (progressBar1.Value >= progressBar1.Maximum) return;
progressBar1.Value += 1;
label1.Text = DateTime.Now.ToLongTimeString();
label2.Text = Convert.ToString(progressBar1.Value);
}
세부 코드
if (progressBar1.Value >= progressBar1.Maximum) return;
progressBar
의 값이 설정된 최댓값 보다 클 경우 return하여 아래의 명령문을 실행시키지 않게합니다.
- Tip : 최대값을 넘겨서 값이 누적될 경우 프로그램의 오류를 발생시킵니다.
progressBar1.Value += 1;
그 후, progressBar의 값을 1씩 누적하여 증가시킵니다.
label1.Text = DateTime.Now.ToLongTimeString();
label2.Text = Convert.ToString(progressBar1.Value);
label1에 현재 시간을 띄웁니다. label2에는 progressBar의 값을 표시합니다.
- Tip : DateTime.Now.ToLongTimeString()는 현재 시간을 표시해줍니다.
Button 1 이벤트 적용
Button1
을 더블클릭하여 이벤트를 활성화 시킵니다.
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "") return;
timer1.Interval = Convert.ToInt32(textBox1.Text);
timer1.Enabled = true;
}
세부 코드
if (textBox1.Text == "") return;
이 구문 또한 위처럼 null
값일 경우 아래의 명령문을 실행시키지 않게합니다.
timer1.Interval = Convert.ToInt32(textBox1.Text);
timer1.Enabled = true;
timer1의 이벤트의 빈도를 설정합니다. 단위는 밀리초입니다.
빈도를 설정하고 타이머를 사용가능하게 바꿔줍니다.
- Tip : Timer는 지정된 시간마다 timer 이벤트 안의 명령문을 반복해 실행시킵니다.
Button 2 이벤트 적용
다음은 Button2
를 더블클릭하여 이벤트를 활성화시킵니다.
private void button2_Click(object sender, EventArgs e)
{
timer1.Interval = 100;
timer1.Enabled = false;
progressBar1.Value = 0;
}
timer1의 빈도를 초기값인 100으로 초기화 시키고, 사용가능하지 않게 만듭니다. 또한 progressBar의 값을 0으로 바꿔줍니다.
타이머 이벤트 실행
다음과 같이 프로그램이 실행되게 됩니다.
전체 코드
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Project
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (progressBar1.Value >= progressBar1.Maximum) return;
progressBar1.Value += 1;
label1.Text = DateTime.Now.ToLongTimeString();
label2.Text = Convert.ToString(progressBar1.Value);
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "") return;
timer1.Interval = Convert.ToInt32(textBox1.Text);
timer1.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Interval = 100;
timer1.Enabled = false;
progressBar1.Value = 0;
}
}
}
공유하기


댓글 남기기