[C# DevExpress] 윈폼 DevExpress에서 ProgressPanel 이용하여 WaitForm 만들기




안녕하세요.

 

오늘은 C# 윈폼 DevExpress에서 ProgressPanel 컨트롤을 이용하여 WaitForm(대기화면)을 만드는 방법에 대해서 알려드리고자 합니다.

 

WaitForm은 쉽게 말해 로딩 중..화면이라고 생각하시면 되겠는데요.

 

DevExpress에서는 ProgressPanel 컨트롤을 이용하여 쉽게 WaitForm을 만들 수 있게 컨트롤을 제공해 주고 있습니다.

 

그럼 바로 어떻게 만드는지 보여드리도록 하겠습니다.


 

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

 

참고로, 폼은 2개 생성하여야 합니다. 첫 번째 폼은 Main , 2번째 폼은 ProgressPanel 컨트롤을 배치할 폼 이렇게 2개 폼을 생성해 주시기 바랍니다.


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

Main 폼



frmProgressPanel



 

위와 같이 Main 폼에는 간단히 SimpleButton 컨트롤 하나를 배치해 주시고, frmProgressPanel 폼에는 ProgressPanel 컨트롤을 배치해 주시기 바랍니다.


 

그럼 이제, 메인 폼에 있는 Show 버튼을 클릭 할 시, frmProgressPanel 폼을 호출하여 WaitForm이 제대로 동작하도록 소스 코드를 작성해 보도록 하겠습니다.

 

예제 코드

Main.cs


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

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 ProgressPanelTest

{

    public partial class Form1 : DevExpress.XtraEditors.XtraForm

    {

        public Form1()

        {

            InitializeComponent();

 

            this.uiBtn_Show.Click += UiBtnShow_Click;

        }

 

        public void UiBtnShow_Click(object sender, EventArgs e)

        {

            frmProgressPanel frm = new frmProgressPanel();

            frm.StartPosition = FormStartPosition.CenterParent;

            frm.Show();

        }

    }

}

 

Colored by Color Scripter

cs


frmProgressPanel.cs


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

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 ProgressPanelTest

{

    public partial class frmProgressPanel : DevExpress.XtraEditors.XtraForm

    {

        Timer timer = new Timer();

        int time = 5;

 

        public frmProgressPanel()

        {

            InitializeComponent();

 

            this.Shown += WaitForm_Shown;

            this.FormClosed += FormClosed_Event;

        }

 

        /// <summary>

        ///  Shown 이벤트 핸들러

        /// </summary>

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

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

        public void WaitForm_Shown(object sender, EventArgs e)

        {

            InitProgressPanel(time);

            timer.Tick += new EventHandler(Timer_Tick);

            timer.Start();

            timer.Interval = 1000;

        }

 

        /// <summary>

        /// ProgressPanel 컨트롤 설정  초기화

        /// </summary>

        /// <param name="time">로딩 시간</param>

        public void InitProgressPanel(int time)

        {

            this.uiProg_Wait.AutoHeight = true;

            this.uiProg_Wait.Caption = "잠시 로딩중..";

            this.uiProg_Wait.ShowCaption = true;

            this.uiProg_Wait.Description = string.Format("로딩 시간 : {0} ", time);

            this.uiProg_Wait.ShowDescription = true;

            this.uiProg_Wait.ToolTip = "My tooltip";

            this.uiProg_Wait.ShowToolTips = true;

            this.uiProg_Wait.WaitAnimationType = DevExpress.Utils.Animation.WaitingAnimatorType.Ring;

            this.uiProg_Wait.CaptionToDescriptionDistance = 5;

        }

 

        /// <summary>

        /// Timer 시간 Tick 이벤트 핸들러

        /// </summary>

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

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

        public void Timer_Tick(object sender, EventArgs e)

        {

            if (uiProg_Wait != null)

            {

                InitProgressPanel(time);

                time--;

            }

 

            if (time < 0)

            {

                this.Close();

                uiProg_Wait = null;

            }

        }

 

        /// <summary>

        ///  닫기 이벤트 핸들러

        /// </summary>

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

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

        public void FormClosed_Event(object sender, EventArgs e)

        {

            if (uiProg_Wait != null)

            {

                uiProg_Wait = null;

            }

        }

    }

}

 

Colored by Color Scripter

cs


실행 결과




위와 같이 Show 버튼을 클릭 시, frmProgressPanel 폼이 호출되어 일정 시간 이후 종료되는 것을 확인하실 수 있습니다.

 

이로써, 간단히 ProgressPanel 컨트롤을 이용하여 WaitForm을 만들어 보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY