1. 동적으로 버튼을 생성하여 등록
실행중에 폼위에 버튼을 동적으로 생성하는 방법
private void FormStatus_Load(object sender, EventArgs e) { Button mbtn; int top = 0; int pos = 0; String txt = ""; pos = -50;top = 0; for (long b = 0; b < 100; b++) { mbtn = new Button(); mbtn.BringToFront(); mbtn.Text=("b" + b); mbtn.Visible = true; this.Controls.Add(mbtn);//폼의 컨트롤러에 버튼을 추가 해줌 if (b % 10 == 0) { pos += 40; } if (b % 10 == 0) top = 0; else top++; mbtn.Left = pos; mbtn.Top = top * 25; mbtn.Width = 40; mbtn.Height = 20; } }
2. 동적으로 사용자 정의 컨트롤(UserControl) 올리기
*특이한것은 컨트롤의 갯수가 5000개 미만이어야 한다는 것이다.
5000개 까지 등록하려면 에러가 발생한다
private void Form_Load(object sender, EventArgs e) { UserControl1 musr; int top = 0; int pos = 0;
for (long i = 0; i < 100; i++) { musr = new UserControl1(); musr.CreateControl();//콘트롤을 생성한다, 생성하지 않으면 껍데기임 musr.SetTitle("S" + i); musr.Visible = true; this.Controls.Add(musr);//생성된 컨트롤을 폼에 추가 if (i % 10 == 0) { pos += 50; } if (i % 10 == 0) top = 0; else top++; musr.Left = pos;//화면에 정렬 musr.Top = top * 25; musr.Width = 50; musr.Height = 20; } }
3. 동적으로 컨트롤을 사용하면 5000개 이사의 컨트롤도 문제 없이 사용가능하다.
//UserControl1 musr;
CustomControl1 musr;
와 같이 UserControl을 상속받지 않고 Control을 직접상속받은 경우는 5000개 이상도 등록가능함.
public partial class CustomControl1 : Control { public CustomControl1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs pe) { Graphics gr = CreateGraphics(); gr.FillRectangle(new SolidBrush(Color.Brown),ClientRectangle); gr.DrawString("s", this.Font, new SolidBrush(ForeColor),new PointF(0,0) ); } private void groupBox1_Enter(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { button1.Text = "Click"; } }
'개발언어 > C#' 카테고리의 다른 글
C#크로스 스레드 작업이 잘못 되었습니다.(delegate,Invoke 사용하기) (0) | 2017.06.14 |
---|---|
관리자 권한 상승 (0) | 2017.05.24 |
c#Typeof로 동적 인스턴스 만들기 (0) | 2017.05.19 |
Compiling C# Code at Runtime (0) | 2017.05.19 |
C#에서 Docking Control 사용하기 (0) | 2017.05.18 |