loading

프로그래밍/C#

C# Timer(타이머) Interval(간격), Enabled

침착곰 2021. 4. 14. 13:55
반응형

안녕하세요.

C# Timer의 속성에 대해서 알아보겠습니다.

Timer의 속성에는 Timer작동 간격을 조정하는 Interval과

타이머를 계속 사용 할 지, 아니면 사용을 안 할지 정하는 Enabled 속성이 있습니다.

Interval과 Enabled속성을 변경하는 소스에 대해서 알아보겠습니다.

 

1. 최종 소스

Timer.zip
0.20MB

 

2. 디자인

 디자인은 적당히 그려줍니다.

TextBox의 시간을 바탕으로 시간조정 버튼을 클릭하면 Timer의 시간이 조정됩니다.

타이머시작과 타이머종료 버튼을 클릭하면 타이머를 시작/종료할 수 있도록 디자인을 그립니다.

 

3. 시간(Interval) 조정

 - 시간조정 버튼을 클릭하면 TextBox의 입력한 값으로 시간이 조정되도록 구현했습니다.

  타이머에서 1000 = 1초를 의미하므로 TextBox의 값에 1000을 곱해줍니다.

  타이머는 시간만 입력이 되야하므로 KeyPress 이벤트를 사용하여 정수값만 입력되도록 추가했습니다.

  이어서 빈 값으로 타이머 시간을 조정할 수 없으므로 빈 값이 들어오면 1로 입력이 되도록 TextChanged 이벤트를 추가했습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 시간조정 버튼 클릭 이벤트
private void btnChange_Click(object sender, EventArgs e)
{
    // 타이머시간을 변경
    timer1.Interval = Int32.Parse(txtInterval.Text) * 1000;
}
 
// 시간조정 textBox입력 이벤트 -> 숫자만 입력되도록 한다.
private void txtInterval_KeyPress(object sender, KeyPressEventArgs e)
{
    //정수만 입력되도록 필터링
    if (!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))    //정수와 백스페이스를 제외한 나머지를 바로 처리
    {
        e.Handled = true;
    }
}
 
// 시간조정 textBox변경 이벤트 -> ""이 입력되면 "1"으로 처리한다.
private void txtInterval_TextChanged(object sender, EventArgs e)
{
    if (txtInterval.Text == "")
        txtInterval.Text = "1";
}
cs

 

4. Enabled/Disabled 변경

 - 타이머시작 버튼을 클릭하면 타이머의 Enabled를 true로 변경하여 타이머가 작동합니다.

 - 타이머종료 버튼을 클릭하면 타이머의 Enabled를 false로 변경하여 타이머를 중지시킵니다.

1
2
3
4
5
6
7
8
9
10
11
// 타이머시작 버튼 클릭 이벤트
private void btnStart_Click(object sender, EventArgs e)
{
    timer1.Enabled = true;
}
 
// 타이머 종료 버튼 클릭 이벤트
private void btnStop_Click(object sender, EventArgs e)
{
    timer1.Enabled = false;
}
cs

 

 

5. 전체 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Timer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            // 타이머시간을 1초로 변경
            timer1.Interval = 1000;
        }
 
        // 타이머 이벤트
        private void timer1_Tick(object sender, EventArgs e)
        {
            // 1초마다 현재시간을 갱신한다.
            lblTime.Text = System.DateTime.Now.ToString("yyyy-MM-dd  hh:mm:ss");
        }
 
        // 시간조정 버튼 클릭 이벤트
        private void btnChange_Click(object sender, EventArgs e)
        {
            // 타이머시간을 변경
            timer1.Interval = Int32.Parse(txtInterval.Text) * 1000;
        }
 
        // 타이머시작 버튼 클릭 이벤트
        private void btnStart_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }
 
        // 타이머 종료 버튼 클릭 이벤트
        private void btnStop_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }
 
        // 시간조정 textBox입력 이벤트 -> 숫자만 입력되도록 한다.
        private void txtInterval_KeyPress(object sender, KeyPressEventArgs e)
        {
            //정수만 입력되도록 필터링
            if (!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))    //정수와 백스페이스를 제외한 나머지를 바로 처리
            {
                e.Handled = true;
            }
        }
 
        // 시간조정 textBox변경 이벤트 -> ""이 입력되면 "1"으로 처리한다.
        private void txtInterval_TextChanged(object sender, EventArgs e)
        {
            if (txtInterval.Text == "")
                txtInterval.Text = "1";
        }
    }
}
 
cs

 

여기까지 C#의 타이머의 속성 및 속성 값을 프로그램에서 변경하는 방법에 대해 알아봤습니다.

C# 개발에 도움이 되셨으면 좋겠습니다.

반응형
그리드형