ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 타이머(Timer)와 프로그레스바(ProgreeBar)
    .NET/C# Form 2008. 10. 22. 06:46
    반응형




    타이머 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
    Lable

    ProgressBar
    ProgressBar

    Timer

     Button

    Lable1
    Lable2

    ProgressBar1
    ProgressBar2

    timer1

    Text = “다운로드”

    Text = “전체 파일 : 0%;
    Text = “파일 : 0%”

    Minimum = 0 ,Maximum = 100
    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() + "%";
      }




























     

    반응형

    댓글

Designed by Tistory.