[C#] 윈폼 프로그래스바(Progress Bar) 사용하기


 

안녕하세요.

 

오늘은 윈폼에서 프로그래스바(Progress Bar) 컨트롤 사용하는 방법에 대해서 알려드리고자 합니다.

 

프로그래스바 컨트롤은 어떠한 프로그램을 실행시키는 과정이나 다운로드, 업로드 등을 사용자에게 시각적으로 보여주는 역할을 주로 합니다.

 

해당 기능 구현을 통하여 여러가지 응용이 가능하기 때문에 꼭 한번씩 예제코드를 따라 해보시기 바랄게요.^^

 

그럼 바로 예제코드를 작성해 보도록 하겠습니다.



1. 윈폼 프로젝트 생성 및 프로그래스바 컨트롤 배치




위와 같이, Label, ProgressBar, Button 컨트롤 세 개를 배치 시켜 주시기 바랍니다.


1

lblStatus

2

progressBar

3

btnStart

 

컨트롤 속성들의 Name은 위의 표와 같습니다.


2. Progress Bar 실행 되게 끔 예제 코드 작성


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

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace 프로그래스바_연습

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private Task ProcessData(List<string> list, IProgress<ProgressReport> progress)

        {

            int index = 1;

            int totalProcess = list.Count;

 

            var progressReport = new ProgressReport();

 

            return Task.Run(() => {

                for (int i = 0; i < totalProcess; i++)

                {

                    progressReport.PercentComplete = index++ * 100 / totalProcess;

                    progress.Report(progressReport);

 

                    Thread.Sleep(20); //used to simulate length of operation

                }

            });

        }

 

        private async void btnStart_Click(object sender, EventArgs e)

        {

            List<string> list = new List<string>();

 

            for (int i = 0; i < 1000; i++)

            {

                list.Add(i.ToString());

            }

 

            lblStatus.Text = "Working...";

 

            var progress = new Progress<ProgressReport>();

            progress.ProgressChanged += (o, report) => {

                lblStatus.Text = string.Format("Procesing...{0}%", report.PercentComplete);

                progressBar.Value = report.PercentComplete;

                progressBar.Update();

            };

            await ProcessData(list, progress);

 

            lblStatus.Text = "Done !";

        }

    }


    public class ProgressReport

    {

        public int PercentComplete { get; set; }

    }


}

 

Colored by Color Scripter

cs

 

C# 코드를 위와 같이 작성을 해주시기 바랍니다. 위의 예제코드는 임의로 List에 값을 0부터 999까지 줘서 Thread.Sleep(20)으로 0.02초마다 ProgressBar 컨트롤이 동작 되게 끔 코드를 작성한 것입니다.

 

향후에 실제 내가 필요한 곳에서는 위의 계산 로직을 변경하셔야 할 것입니다.


실행 결과



 

이렇게 Start 버튼을 클릭하면, ProgressBar가 제대로 동작하는 것을 확인하실 수 있습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY