This Question的答案虽然是一个明显的解决方案,但对于这种情况来说还不够。我在原来的问题中加粗了这个原因,解释了为什么我希望它“真正回答” - 感谢LarsTech!
我有一个包含100个WinForms 表单屏幕的库,其中包含'Beyond My Control',我可以在我的应用中分享一些。但是,我的应用程序使用选项卡控件,我需要表单的内容显示在选项卡中而不是弹出窗口。
当我尝试新建其中一个表单并将其添加到选项卡的控件集合时,我收到以下错误消息:
无法将顶级控件添加到控件中。
有人知道怎么解决这个问题吗?我知道还有其他方法涉及更好的架构,但截止日期,积压和富有的新客户等待着。 [叹息/
private void button1_Click(object sender, EventArgs e)
{
//panel1.Controls.Add(new Button());
Form f = new Form();
f.Controls.Add(new CheckBox());
//f.ShowDialog();
panel1.Controls.Add(f);
}
答案 0 :(得分:5)
尝试关闭TopLevel:
f.TopLevel = false;
f.FormBorderStyle = FormBorderStyle.None;
f.Visiible = true;
现在基本上是一个UserControl。但请注意,因为它是一个表单,它会显示在Application.OpenForms
集合中,这可能不是您的意图。
答案 1 :(得分:2)
您需要将表单的TopLevel
属性设置为false
,如下所示:
f.TopLevel = false;
您可能还想将FormBorderStyle
属性设置为None
。
f.FormBorderStyle = FormBorderStyle.None;
正如上面的评论所述,如果可能的话,最好将其设为UserControl
。