将表单添加到UserControl - 这可能吗?

Sha*_*air 9 .net c# user-controls winforms

通常,控件正被添加到表单中.但我需要做相反的事情 - 向容器用户控件添加一个Form实例.

这背后的原因是我需要将第三方应用程序嵌入到我自己的应用程序中.由于复杂性,将表单转换为用户控件是不可行的.

Han*_*ant 12

这可以通过将窗体的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);
    }
}
Run Code Online (Sandbox Code Playgroud)