[C# 윈폼] C# 윈도우 어플리케이션으로 StopWatch(스톱워치) 만들기


 

안녕하세요.

 

오늘은 C# 윈폼으로 스톱워치 어플리케이션을 간단히 만들어 보도록 하겠습니다.

 

다들, 스톱워치가 무엇인지는 알거라 생각이 들기 때문에, 별도의 설명 없이 바로 윈폼 프로젝트를 만들어서 어떻게 만드는지 보여드리도록 하겠습니다.

 

먼저 윈폼 빈 프로젝트를 만들어 주시고, 아래와 같이 컨트롤들을 배치해 주시기 바랍니다.


 

윈폼 프로젝트 생성 및 컨트롤 배치



컨트롤은 크게 Label컨트롤과 Button 컨트롤 2개를 이용하여 위와 같이 디자인 하였습니다.

 

디자인은 사용자가 어떻게 하던지 상관 없기 때문에, 폰트 종류와 크기는 향후에 마음대로 디자인 하셔도 좋습니다.

 

여기까지 배치 하였다면, 추가적으로 Timer 컨트롤을 하나 더 배치해 주시기 바랍니다.


Timer 컨트롤 배치



도구 상자에서 Timer 라고 입력하시면, 위와 같이 Timer 컨트롤이 나오게 되고, 처음 생성 하였던 윈폼 프로젝트에 배치해 주시기 바랍니다.

 

숫자

컨트롤 이름

1

uiLb_Hour

2

uiLb_Minute

3

uiLb_Second

4

uiBtn_Start

5

uiBtn_Stop

6

uiBtn_Reset

7

timer1

 

각 컨트롤의 변수 이름은 위와 같습니다.


 

이제 여기까지 하였다면, 바로 소스코드로 넘어가서 StopWatch가 작동 되도록 예제 코드를 작성해 보도록 하겠습니다.


 

소스 코드는 간단하고, 주석도 함께 달아 놓았기 때문에 별도의 설명을 따로 드리지 않겠습니다.

 

바로 이해하실 수 있을거라 생각합니다.


예제 코드


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

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

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 StopWatchTest

{

    public partial class Form1 : Form

    {

        // 변수 선언

        public int hours = 0;

        public int minutes = 0;

        public int seconds = 0;

 

        public Form1()

        {

            InitializeComponent();

 

            //Start, Stop, Reset 버튼 클릭 이벤트 선언

            uiBtn_Start.Click += uiBtn_Start_Click;

            uiBtn_Stop.Click += uiBtn_Stop_Click;

            uiBtn_Reset.Click += uiBtn_Reset_Click;

        }

 

        /// <summary>

        ///  증가

        /// </summary>

        private void IncreaseSecond()

        {

            //초가 59 초과면

            if(seconds > 59)

            {

                seconds = 0;

                IncreaseMinute();

            }

            else

            {

                seconds++;

            }

        }

 

        /// <summary>

        ///  증가

        /// </summary>

        private void IncreaseMinute()

        {

            //분이 59 초과면

            if(minutes > 59)

            {

                minutes = 0;

                IncreaseHour();

            }

            else

            {

                minutes++;

            }

        }

 

        /// <summary>

        /// 시간 증가

        /// </summary>

        private void IncreaseHour()

        {

            hours++;

        }

 

        public void StopWatch_Tick(object sender, EventArgs e)

        {

            ShowTime();

            IncreaseSecond();

        }

 

        /// <summary>

        /// 시작 버튼 클릭 이벤트 핸들러

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void uiBtn_Start_Click(object sender, EventArgs e)

        {

            timer1.Enabled = true;

            timer1.Interval = 1000;

            //타이머 Tick 이벤트

            timer1.Tick += StopWatch_Tick;

        }

 

        /// <summary>

        /// 멈춤 버튼 클릭 이벤트 핸들러

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void uiBtn_Stop_Click(object sender, EventArgs e)

        {

            timer1.Enabled = false;

        }

 

        /// <summary>

        /// 초기화 버튼 클릭 이벤트 핸들러

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void uiBtn_Reset_Click(object sender, EventArgs e)

        {

            // 초기화

            hours = 0;

            minutes = 0;

            seconds = 0;

 

            ShowTime();

        }

 

        private void ShowTime()

        {

            uiLb_Hour.Text = hours.ToString("00");

            uiLb_Minute.Text = minutes.ToString("00");

            uiLb_Second.Text = seconds.ToString("00");

        }

    }

}

 

Colored by Color Scripter

cs


실행 결과



 

위와 같이 StopWatch가 잘 작동 되는 것을 확인하실 수 있습니다.

 

여기서 핵심은 Timer에서 Tick 이벤트 내용이므로, 해당 내용을 꼼꼼히 보시고 이해하시면서 따라하시면 되겠습니다.

 

글 읽어 주셔서 감사합니다.


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY