2012-09-05 5 views

답변

4

단추를 만들고 속성 및 이벤트 처리기를 설정 한 다음 양식의 Controls 컬렉션에 추가하면됩니다.

var button = new Button(); 
try 
{ 
    button.Text = "Button 1"; 
    button.Click += (sender, e) => System.Diagnostics.Process.Start(targetURL); 
    //Or if you don't want to use a lambda and would rather have a method; 
    //button.Click += MyButton_Click; 
    Controls.Add(button); 
} 
catch 
{ 
    button.Dispose(); 
    throw; 
} 

//Only needed when not using a lambda; 
void MyButton_Click(Object sender, EventArgs e) 
{ 
    System.Diagnostics.Process.Start(targetURL); 
} 
+0

좋은 답변을위한 thx – Karamafrooz

2

당신은 양식의 Controls 컬렉션에 원하는 컨트롤을 추가 할 수 있습니다 :

var targetURL = // ... 

try 
{ 
    SuspendLayout(); 

    for (int i = 0; i < 10; i++) 
    { 
     var button = new Button(); 
     button.Text = String.Format("Button {0}", i); 
     button.Location = new Point(0, i * 25); 
     button.Click += (object sender, EventArgs e) => System.Diagnostics.Process.Start(targetURL); 
     this.Controls.Add(button); 
    } 
} 
finally 
{ 
    ResumeLayout(); 
} 

부모 컨트롤에 여러 컨트롤을 추가, 당신이를 초기화하기 전에 SuspendLayout 메소드를 호출하는 것이 좋습니다 추가 할 컨트롤. 컨트롤을 부모 컨트롤에 추가 한 후 ResumeLayout 메서드를 호출하십시오. 이렇게하면 많은 컨트롤이있는 응용 프로그램의 성능이 향상됩니다.

2

버튼 변수를 선언하십시오.

이벤트 처리기 추가

컨트롤 속성 속성에 추가하십시오.

이익

당신은 텍스트 상자 "txbURL"버튼 "btnNavigateToURL"를 포함하는 사용자 정의 컨트롤을 작성하고 코드 (System.Diagnostics.Process.Start를 실행하려면 버튼의 이벤트 핸들러를 작성할 수
2

(TargetURL이);)

일단 작업을 완료하면 런타임에 양식에 컨트롤을 추가하고 다음과 같은 코드를 작성하는 것이 쉽습니다 (지금은 # 편집기가 없으므로 코드를 확인해야 할 수도 있음).)

MyControlClassName userControl = new MyControlClassName(string targetUrl); 
userControl.Parent = yourForm; 
yourForm.Controls.Add(userControl); 

그게 전부입니다.

관련 문제