winforms 将窗体添加到用户控件-这可能吗?

6ojccjat  于 2023-10-23  发布在  其他
关注(0)|答案(2)|浏览(132)

通常,控件被添加到窗体中。但是我需要做一件相反的事情--向容器用户控件添加一个Form示例。
这背后的原因是我需要将第三方应用程序嵌入到我自己的应用程序中。由于复杂性,将窗体转换为用户控件是不可行的。

bn31dyow

bn31dyow1#

这可以通过将窗体的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);
    }
}
yrwegjxp

yrwegjxp2#

根据Hans Passant的说法,我发现如果您将表单放入的控件是Flow Layout Panel,则禁用WrapContents将修复内容未与FlowDirection内联的对齐问题。

public void EmbedForm(Form frm)
        {
            frm.TopLevel = false;
            frm.FormBorderStyle = FormBorderStyle.None;
            frm.Visible = true;

            FLP_Inspector.WrapContents = false;
            FLP_Inspector.Controls.Add(frm);
        }

相关问题