[C# 윈폼] 윈폼 버튼 동적으로 생성하기(Dynamic Button)


안녕하세요.

 

오늘은 C# 윈폼에서 버튼 컨트롤을 동적으로 생성하는 방법에 대해서 알려드리려고 합니다.

 

큰 어려움 없기 때문에 다른 부연 설명없이 바로 예제 코드를 통해서 어떻게 버튼을 동적으로 생성하는지 보여드리도록 하겠습니다.


 

먼저 아래와 같이 빈폼 프로젝트 하나를 생성해 주시기 바랍니다.

 

빈폼 프로젝트 생성



 

예제 코드


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

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 DynamicButton

{

    public partial class Form1 : Form

    {

        public int WIDTH = 0;

        public int HEIGHT = 0;

 

        public Form1()

        {

            InitializeComponent();

 

            this.Load += DynamicButton_Load;

        }

 

        public void DynamicButton_Load(object sender, EventArgs e)

        {

            DynamicButton();

        }

 

        /// <summary>

        /// 버튼 컨트롤 동적으로 생성하기

        /// </summary>

        public void DynamicButton()

        {

            Control[] BTN = new Control[10];

            FlowLayoutPanel flp = new FlowLayoutPanel();

 

            for (int idx = 0; idx < 10; idx++)

            {

                BTN[idx] = new Button();

                BTN[idx].Name = idx.ToString();

                BTN[idx].Parent = this;

                BTN[idx].Size = new Size(9030);

                int x = idx + 1;

                BTN[idx].Text = "Dynamic_" + x.ToString();

 

                WIDTH += 80;

                HEIGHT += 30;

 

                flp.Controls.Add(BTN[idx]);

            }

 

            this.Controls.Add(flp);

            flp.Dock = DockStyle.Fill;

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과 

 


 

위와 같이 FlowLayoutPanel에 총 10개의 버튼이 동적으로 알맞게 생성된 것을 확인하실 수 있습니다.^^

 

위의 DynamicButton 메서드 내용을 잘 이해하시면 여러가지로 유용하게 사용하실 수 있을 거에요~~

 

감사합니다!^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY