타이머 Timer
타이머 컨트롤은 정해진 시간 간격마다 어떤 코드를 실행할 때 사용합니다
타이머가 시작되면 일정 시간 간격으로 지정한 메서드를 불러줍니다
속성 설명
Enabled 타이머 시작/멈춤을 지정합니다
ex) timer1.Enabled = true;
Interval 서드를 불러주는 시간 간격을 지정합니다. millisec 단위합니다(초기값:100)
예) titmer1.Interval = 500;
Start 타이머를 시작합니다 예) timer1.Start();
Stop 타이머를 멈춥니다 예) timer1.Stop();
Enable 속성에 true 값을 넣으면 Start 메서드가 불려져 타이머가 시작됩니다 반대로 false값을 넣으면
Stop 메서드가 불려져 타이머가 멈춥니다
Enable 값을 검사해서 타이머가 시작 여부를 알수 도 있습니다
if(Enabled)
{
Timer 컨트롤의 Tick이벤트는 타이머를 시작했을때 주기적으로 발생하는 이벤트입니다
이벤트 발생할때마다 불려질 이벤트 핸들러를 구현합니다
private void titmer1_Tick(object sender, System.EventArgs e)
{
프로그레스바 ProgressBar
프로그레스바 컨트롤은 시간이 오래 걸리는 어떤 작업을 할대, 사용자에게 현재 진행 정도를
알려줄 떄 사용합니다. 윈도우에서 파일을 복사하거나 웹에서 파일을 다운로드 받을 떄 많이
볼 수 있는 컨트롤로 사용자에게 지루함을 덜어주면서 계속 실행되고 있을을 알려줍니다
예를 들면 네트워크를 통해서 파일을 다운로드 받는다거나 VS.NET과 같은 큰 프로그램을 설치할때
현재 진행 상황과 함께 앞으로 남은 시간을 계산해서 보여줍니다
이렇게 오랜 시간이 걸리는 작업을 할 때 사용자에게 얼마나 진행되었으며 남은 시간이
얼마나 되는지 알려줄 수 있습니다
* 다음은 ProgressBar 컨트롤의 주요 속성합니다
속성 설명
Minimum 프로그레스 컨트롤에서 처음 시작값입니다.
ex) progressBar1.Minimum = 0;
Maxmum 프로그레스 컨트롤에서 맨 마지막 값입니다.
ex) progressBar1.Maxmum = 100;
Step 값의 증가치를 가지고 있습니다.
ex) progressBar1.Step = 10;
Value 현재 값을 알려 줍니다
ex) label1.Text = value.Tostring()+"%";
따라하기
타이머를 이용해서 프로그레스바를 조금씩 증가시키는 예제입니다
여러개의 파일을 다운로드받는다고 가정하고, 전체 파일에 대한 다운로드 퍼센트와
각 파일에 대한 다운로드 퍼센트를 보여줍니다
프로젝트 이름과 작업할 폴더를 지정하고 새로운 프로젝트를 생성합니다
다음과 같이 폼 윈도우를 구성하고 컨트롤 속성을 지정합니다
객체 | 객체이름 | 속성지정 |
Buton Lable ProgressBar Timer |
Button Lable1 ProgressBar1 timer1 |
Text = “다운로드” Text = “전체 파일 : 0%; Minimum = 0 ,Maximum = 100 Interval = 100 |
다운로드 시작 버튼의 Click 이벤트 핸들러를 구현합니다
타이머가 실행된 상태와 아닌 상태를 구분해서 구현해줍니다
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button_Click(object sender, EventArgs e)
{
if (timer1.Enabled)// 타이머가 ON 되어 있으면,
{
timer1.Stop();// 타이머 멈춤
button.Text = "다운로드 시작";
// 사용자가 타이머를 시작할수 있도록 "시작"으로바꿈
}
else//타이머가 off 상태이면
{
//타이머 시작
timer1.Start();
//사용자가 타이머를 멈출 수 있도록 "멈춤으로 바꿈
button.Text = "다운로드 멈춤";
}
}
}
Timer1 컨트롤을 더블클릭하면 Tick 이벤트 핸들러가 추가됩니다
추가된 이벤트 핸들러에 다음과 같이 구현합니다
private void timer1_Tick(object sender, EventArgs e)
{
// 각 파일 진행 퍼센트
if (progressBar2.Value < progressBar1.Maximum)
progressBar2.Value += 20;
else
{
// 전체 파일에 대한 진행 퍼센트
if (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.Value += 20;
progressBar2.Value = 0;
}
else
{
//전체 파일 다운로드 끝남 초기화
timer1.Stop();
button.Text = "다운로드 시작";
progressBar1.Value = 100;
progressBar2.Value = 100;
}
label1.Text = "전체 파일 : " + progressBar1.Value.ToString() + "%";
}
label2.Text = "파일 : " + progressBar2.Value.ToString() + "%";
}
'.NET > C# Form' 카테고리의 다른 글
C# 메모장 만들기 (0) | 2008.10.23 |
---|---|
C# DateTimePicker 컨트롤 MonthCalender (0) | 2008.10.23 |
C# 툴바와 상태바, NotifyIcon 컨트롤 (0) | 2008.10.23 |
C# 트랙바(TrackBar) 픽처박스(PictureBox) 이미지 리스트 (imageList) (0) | 2008.10.22 |
C# 리치텍스트박스와 메뉴(MenuStrip) 컨텍스트메뉴(ContextMeneu) (0) | 2008.10.22 |
C# 공통 대화상자 컨트롤(파일대화상자,텍스트박스,폰트/색상 대화상자,메세지박스) (0) | 2008.10.22 |
C# 예제로 배우는 컨트롤 (0) | 2008.10.21 |
C# 레이블 ( 레이블 링크) label (0) | 2008.10.21 |