버튼과 같은 같은 콘트롤이 반복되면, 이를 코딩에서 반복문으로 처리할 수 있다. 이렇게 하는 것이 훨씬 시간을 줄일 수 있으므로 알아두면 좋겠다.
화면에 버튼을 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
'C# Form' 카테고리의 다른 글
[C# Form] PictureBox와 OpenFileDialog (0) | 2016.10.06 |
---|---|
[C# Form] GDI+와 비트맵 이미지 (0) | 2016.10.03 |
[C# Form] 마우스 좌표를 StatusStrip에 표시 (0) | 2016.09.21 |
[C# Form] 간단한 디지털 시계 (0) | 2016.09.21 |
도서관 관리 프로그램 (0) | 2016.09.18 |