8
通常,控件将被添加到表单中。但我需要做一个相反的事情 - 添加一个Form实例到容器用户控件。将表单添加到UserControl - 这可能吗?
背后的原因是我需要将第三方应用程序嵌入到我自己的应用程序中。由于复杂性,将表单转换为用户控件是不可行的。
通常,控件将被添加到表单中。但我需要做一个相反的事情 - 添加一个Form实例到容器用户控件。将表单添加到UserControl - 这可能吗?
背后的原因是我需要将第三方应用程序嵌入到我自己的应用程序中。由于复杂性,将表单转换为用户控件是不可行的。
这可以通过将窗体的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);
}
}
This Works,thank you。我注意到的只有一个小故障 - 嵌入式表单停止响应大小调整,它保持固定大小。任何想法如何解决这个问题? – SharpAffair
嗯,这是正常的,嵌入式控件通常不能由用户调整大小。将用户控件锚定在底部和右侧,以便随着所处的表单调整大小,从而更改过程中嵌入表单的大小。 –
嵌入式表单和用户控件都将Dock设置为Fill。控件调整大小,但嵌入的形式不。 – SharpAffair