[C# 윈폼] 윈폼으로 SlideForm 만들기


안녕하세요.

 

오늘은 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();

        }

    }

}

 

Colored by Color Scripter

cs

 

[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(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

            dt.Rows.Add(1234567);

        }

    }

}

 

Colored by Color Scripter

cs

 

[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);

        }

    }

}

 

Colored by Color Scripter

cs

 

[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);

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



위와 같이 MainForm에 있는 SlideButton을 클릭하시게 되면, 시트랑 Chart가 번갈아 가면서 출력되는 모습을 확인하실 수 있습니다.

 

이로써, 윈폼에서 간단히 SlideForm을 만들어 보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY