본문 바로가기

C# Form

[C# Form] Control의 배열 - 코딩으로 콘트롤 입력하기

버튼과 같은 같은 콘트롤이 반복되면, 이를 코딩에서 반복문으로 처리할 수 있다. 이렇게 하는 것이 훨씬 시간을 줄일 수 있으므로 알아두면 좋겠다.

화면에 버튼을 3행 4열로 12개 배치하고 싶다면, 

디자이너에서 복사해서 넣을 수도 있지만|
그렇게 하는 경우 컨트롤의 이름이나 이벤트 함수등을 일일히 지정해 주어야 하는 번거러움이 있다.

따라서 이런 경우에는 코딩에서 처리해 주면 좋다.



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
namespace p280_controlArray
{
    public partial class Form1 : Form
    {
        Button[] btn = new Button[12];
        static int margin = 10;
        static int btnWidth = 50;
        static int btnHeight = 50;
 
        public Form1()
        {
            InitializeComponent();
 
            this.Width = 2 * margin + 4 * btnWidth + 2 * 3 + 2 * 4// 3: btn 사이의 간격, 4는 form의 boundary 두께
            this.Height = 2 * margin + 3 * btnWidth + 2 * 2 + 2 * 4 + 24;
           
            for (int i = 0; i < btn.Length; i++)
            {
                btn[i] = new Button();
                btn[i].Text = i.ToString();
                btn[i].Size = new Size(btnWidth, btnHeight);
                btn[i].Location = new Point(margin + i % 4 * btn[i].Width, margin + i / 4 * btn[i].Height);
                btn[i].Click += Form1_Click;
 
                Controls.Add(btn[i]);
            }
        }
 
        private void Form1_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            MessageBox.Show(btn.Text + "번 버튼이 클릭되었습니다.");
        }
    }
}
cs


beeeye Dmu