2011-09-06 31 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

This Works,thank you。我注意到的只有一个小故障 - 嵌入式表单停止响应大小调整,它保持固定大小。任何想法如何解决这个问题? – SharpAffair

+0

嗯,这是正常的,嵌入式控件通常不能由用户调整大小。将用户控件锚定在底部和右侧,以便随着所处的表单调整大小,从而更改过程中嵌入表单的大小。 –

+0

嵌入式表单和用户控件都将Dock设置为Fill。控件调整大小,但嵌入的形式不。 – SharpAffair