[C# 윈폼] 윈폼으로 SlideForm 만들기
- C#/Windows Form
- 2020. 6. 25. 00:00
안녕하세요.
오늘은 C# 윈폼에서 SlideForm을 만드는 방법에 대해서 알려드리려고 합니다.
바로 빈 윈폼 프로젝트를 생성해서 어떻게 SlideForm을 구현하는지 보여드리겠습니다.
빈 윈폼 프로젝트 생성 및 Button 컨트롤 배치
먼저 Main 화면에는 위와 같이 Button 컨트롤을 배치해 주시기 바랍니다.
이제, 이 Button 컨트롤을 클릭했을 때, SlideForm이 실행되면서 컨트롤들이 바뀌게 예제 코드를 작성해 보도록 하겠습니다.
저는 SlideForm 화면 1개와 UserContorl 2개를 추가적으로 더 만들어 주었습니다.
SlideForm 화면
UserControl1, UserControl2
참고로, UserControl에는 아무것도 없으면 보기가 휑해서 DataGridView 컨트롤과 Chart 컨트롤을 하나씩 배치해 두었습니다.
그럼 이제 SlideForm 작동이 되도록 소스코드를 작성해 보겠습니다.
예제 코드
[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 31 32 33 34 35 36 37 |
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 SlideFormTest { public partial class Form1 : Form { public Form1() { InitializeComponent();
//버튼 클릭이벤트 선언 this.uiBtn_SlideForm.Click += uiBtn_SlideForm_Click; }
/// <summary> /// 버튼 클릭 이벤트 핸들러 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void uiBtn_SlideForm_Click(object sender, EventArgs e) { //SlideForm 호출 SlideForm frm = new SlideForm(); frm.StartPosition = FormStartPosition.CenterParent; frm.ShowDialog(); } } }
|
[UserControl1.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 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace SlideFormTest { public partial class UserControl1 : UserControl { public DataTable dt = null;
public UserControl1() { InitializeComponent();
this.Load += Load_Event; }
//UserControl Load 이벤트 public void Load_Event(object sender, EventArgs e) { GetDatTable();
dataGridView1.DataSource = dt; }
/// <summary> /// 데이터 테이블 생성 메서드 /// </summary> public void GetDatTable() { dt = new DataTable();
//컬럼 생성 dt.Columns.Add("Column1", typeof(int)); dt.Columns.Add("Column2", typeof(int)); dt.Columns.Add("Column3", typeof(int)); dt.Columns.Add("Column4", typeof(int)); dt.Columns.Add("Column5", typeof(int)); dt.Columns.Add("Column6", typeof(int)); dt.Columns.Add("Column7", typeof(int));
//Row 생성 dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); dt.Rows.Add(1, 2, 3, 4, 5, 6, 7); } } }
|
[UserControl2.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 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace SlideFormTest { public partial class UserControl2 : UserControl { public UserControl2() { InitializeComponent();
//Load 이벤트 this.Load += Load_Event; }
/// <summary> /// Form Load 이벤트 핸들러 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <returns></returns> public void Load_Event(object sender, EventArgs e) { GetChartData(); }
/// <summary> /// 차트 데이터 생성 /// </summary> public void GetChartData() { chart1.Series["Series1"].Points.Clear(); chart1.Series["Series1"].Points.Add(100); // X=1 chart1.Series["Series1"].Points.Add(200); // X=2 chart1.Series["Series1"].Points.Add(300); chart1.Series["Series1"].Points.Add(400); } } }
|
[SlideForm.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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
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 SlideFormTest { public partial class SlideForm : Form { List<Control> ctlList = null;
//타이머 객체 선언 Timer slideTimer = new Timer(); int idx = 0;
public SlideForm() { InitializeComponent();
//폼 Shown 이베트 선언 this.Shown += SlideForm_Shown; }
/// <summary> /// SlideForm Shown 이벤트 핸들러 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void SlideForm_Shown(object sender, EventArgs e) { //컨트롤 저장 AddControl();
//타이머 시작 SlideTimer_Start(); }
/// <summary> /// 타이머 설정 메서드 /// </summary> public void SlideTimer_Start() { slideTimer.Interval = 3 * 1000; //3초 간격 slideTimer.Tick += SlideTimer_Tick; //타이머 Tick 이벤트 선언
this.Controls.Clear(); this.Controls.Add(ctlList[idx]);
idx++;
slideTimer.Start(); //타이머 시작 }
/// <summary> /// 타이머 TIck 이벤트 핸들러 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SlideTimer_Tick(object sender, EventArgs e) { this.Controls.Clear(); this.Controls.Add(ctlList[idx]); SetTitle(ctlList[idx]);
idx++;
if (idx >= ctlList.Count) idx = 0; }
/// <summary> /// SlideForm Title 설정 /// </summary> /// <param name="ctl"></param> private void SetTitle(Control ctl) { if (ctl is UserControl1) this.Text = "SlideForm - [Data Sheet]"; else if (ctl is UserControl2) this.Text = "SlideForm - [Chart]"; }
/// <summary> /// 컨트롤 객체 생성 및 List에 저장 /// </summary> public void AddControl() { //UserControl 객체 각각 1개씩 생성 UserControl1 user1 = new UserControl1(); UserControl2 user2 = new UserControl2();
//ctlArr 리스트 객체 생성 ctlList = new List<Control>();
//ctlList 객체에 UserControl 저장 ctlList.Add(user1); ctlList.Add(user2); } } }
|
실행 결과
위와 같이 MainForm에 있는 SlideButton을 클릭하시게 되면, 시트랑 Chart가 번갈아 가면서 출력되는 모습을 확인하실 수 있습니다.
이로써, 윈폼에서 간단히 SlideForm을 만들어 보았습니다.
감사합니다.^^
'C# > Windows Form' 카테고리의 다른 글
[C# 문법] C# Color 값 16진수 색상 코드 사용하기 (0) | 2020.07.06 |
---|---|
[C# 윈폼] TableLayoutPanel 에 컨트롤 추가하기 (0) | 2020.06.28 |
[C# 윈폼] DataGridView 컨트롤 Row 추가 및 삭제 하기 (0) | 2020.06.22 |
[C# 윈폼] C# 윈폼 DataGridView 컨트롤 Image Cell ClickEvent 발생시키기 (0) | 2020.06.21 |
[C# 윈폼] C# 윈폼 DataGridView 이미지 Cell 추가하기(이미지 넣기) (3) | 2020.06.20 |
이 글을 공유하기