[C# DevExpress] 윈폼 DevExpress에서 ProgressPanel 이용하여 WaitForm 만들기
- C#/DevExpress
- 2020. 4. 12. 01:00
안녕하세요.
오늘은 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(); } } }
|
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; } } } }
|
실행 결과
위와 같이 Show 버튼을 클릭 시, frmProgressPanel 폼이 호출되어 일정 시간 이후 종료되는 것을 확인하실 수 있습니다.
이로써, 간단히 ProgressPanel 컨트롤을 이용하여 WaitForm을 만들어 보았습니다.
감사합니다.^^
'C# > DevExpress' 카테고리의 다른 글
이 글을 공유하기