2015-01-10 2 views
0

두 개의 폼이 있는데, 코드가 어디에 있든 관계없이 특정 폼에 단추를 추가 할 수 있기를 원합니다.다른 폼에 컨트롤 추가하기

일반적으로 this.Controls.Add(button)과 같은 작업을 수행하지만이 양식에 추가되는 것을 원하지 않습니다. Form1 frm = new Form1()frm.Controls.Add(button)과 같은 작업을 시도했지만 그 중 하나가 작동하지 않았습니다. 어떻게 작성해야합니까?

이 코드는 작동하지 않습니다이 양식은 오류가없는 여전히

Button b = new Button(); 
b.Size = new Size(50,50); 
b.Location = new Point(50,50); 
new Form1().Controls.Add(b); 

비어,하지만 아무것도 추가되지 않습니다.

나는 일종의 해결 방법을 발견했다.

Control ctrl = this; 
ctrl.Controls.Add(b); 

이 작동하지만, 차라리 당신이 실행되는 단일 인스턴스에 추가합니다 폼에 컨트롤을 추가

+0

'문제 설명 work'하지 않았다. 더 구체적으로 질문에 대한 자세한 내용을 추가하십시오. – Reniuz

+0

아무 것도 추가되지 않았습니다. 양식은 그냥 비어 있습니다. – RexMan85

+0

문제를 설명하는 짧은 코드를 게시하십시오. – SimpleVar

답변

0
Button b = new Button(); 
b.Size = new Size(50,50); 
b.Location = new Point(50,50); 
new Form1().Controls.Add(b); // This will do nothing you want. 

에 추가 할 양식을 정확하게 지정하는 방법이있을 것이다 그것은 일반적인 형태가 아닙니다.

이 시도 :

다른 양식에서이 일을하는 경우
Form1 form = new Form1(); 
Button b = new Button(); 
... 
form.Controls.Add(b); 
form.ShowDialog(); // Or .Show() 

Form1 anotherForm = new Form1(); 
anotherForm.ShowDialog(); // This instance will NOT have the added button 

, 당신이 시도 할 수 있습니다 :

// Constructor 
this._otherForm = new Form1(); // save reference of the other form, to be able to add controls to it later 

// Anywhere in the code 
this._otherForm.Show(); // will display the other form 

// On user action, for example on button click 
this._otherForm.Controls.Add(c); // will add the control c to the other form 
관련 문제