通常情况下,我们向表单中添加控件。但是我需要做相反的事情——将一个表单实例添加到容器用户控件中。
背后的原因是我需要将第三方应用程序嵌入到我的应用程序中。由于复杂性等原因,将表单转换为用户控件是不可行的。
通常情况下,我们向表单中添加控件。但是我需要做相反的事情——将一个表单实例添加到容器用户控件中。
背后的原因是我需要将第三方应用程序嵌入到我的应用程序中。由于复杂性等原因,将表单转换为用户控件是不可行的。
通过将表单的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);
}
}
public void EmbedForm(Form frm)
{
frm.TopLevel = false;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Visible = true;
FLP_Inspector.WrapContents = false;
FLP_Inspector.Controls.Add(frm);
}