상위 목록: 하위 목록: 작성 날짜: 읽는 데 11 분 소요

프로젝트 구성

도구상자에서 Timer, TextBox, Button, Label, ProgressBarForm1에 생성합니다.

위 이미지와 같이 배치합니다.


도구 상자 속성

속성을 다음과 같이 설정합니다.

  1. Button (1번)
    • Text : Send
  2. Button (2번)
    • Text : Reset
  3. Label (1번)
    • Text : 현재시간
  4. 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;
        }
    }
}

댓글 남기기