2011-09-06 7 views
8

일반적으로 양식에 컨트롤이 추가되고 있습니다. 하지만 컨테이너 사용자 컨트롤에 Form 인스턴스를 추가하는 것과 반대되는 작업을 수행해야합니다.UserControl에 폼 추가 - 이것이 가능합니까?

이유는 제 자신의 응용 프로그램을 타사 응용 프로그램에 포함시켜야하기 때문입니다. 복잡성으로 인해 양식을 사용자 정의 컨트롤로 변환 할 수 없습니다.

답변

11

폼의 TopLevel 속성을 false로 설정하면이 작업을 수행 할 수 있습니다. UserControl과 거의 구분할 수없는 자식 창으로 바뀝니다. 다음은 필요한 코드가 포함 된 샘플 사용자 정의 컨트롤입니다.

public partial class UserControl1 : UserControl { 
    public UserControl1() { 
     InitializeComponent(); 
    } 
    public void EmbedForm(Form frm) { 
     frm.TopLevel = false; 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Visible = true; 
     frm.Dock = DockStyle.Fill; // optional 
     this.Controls.Add(frm); 
    } 
} 
+0

감사합니다. 임베디드 형식이 크기 조정에 반응하지 않고 고정 된 크기로 남아 있습니다. 이 문제를 어떻게 해결할 수 있습니까? – SharpAffair

+0

음, 정상적인 임베디드 컨트롤은 일반적으로 사용자가 크기를 조정할 수 없습니다. 사용자 정의 컨트롤을 아래쪽 및 오른쪽으로 고정하여 폼의 크기와 함께 크기를 조정하여 프로세스에서 포함 된 폼의 크기를 변경합니다. –

+0

포함 된 폼과 사용자 정의 컨트롤 모두 Dock을 채우기로 설정해야합니다. 컨트롤의 크기는 조정되지만 포함 된 양식에는 적용되지 않습니다. – SharpAffair

관련 문제