顶级控件不能添加到控件中

本文关键字:控件 添加 不能 级控 | 更新日期: 2023-09-27 18:13:40

如何在主表单中加载其他表单。

我试着写

private void frmInitialEntryBooks_Load(object sender, EventArgs e)
{
    frmSujbect objForm = new frmSujbect();
    pnl.Controls.Add(objForm);
    objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    objForm.Dock = DockStyle.Fill;
    objForm.Show();
}

但是它抛出异常Top-level control cannot be added to a control在行pnl.Controls.Add(objForm);

顶级控件不能添加到控件中

使用

private void frmInitialEntryBooks_Load(object sender, EventArgs e)
{
    frmSujbect objForm = new frmSujbect();
    objForm.TopLevel = false;
    pnl.Controls.Add(objForm);
    objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    objForm.Dock = DockStyle.Fill;
    objForm.Show();
}

您缺少objForm.TopLevel = false;

frmsubject中设置TopLevel = False,然后尝试

frmSujbect objForm = new frmSujbect();
pnl.Controls.Add(objForm);
objForm.Show();

我做了以下操作:

方法:

private void PopulateFormIntoTab(Form form)
{
    TabPage page = tabControl1.SelectedTab;
    form.TopLevel = false;
    form.Parent = page;
    form.FormBorderStyle = FormBorderStyle.None;
    form.Dock = DockStyle.Fill;
    form.Show();
    tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Clear();
    tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Add(form);
}

初始化表单:

public Form1()
{
    InitializeComponent();
    tabControl1.TabPages.Clear();
    tabControl1.Dock = DockStyle.Fill;
    tabControl1.TabPages.Add(new TabPage("Form2"));
    tabControl1.TabPages.Add(new TabPage("Form3"));
    tabControl1.TabPages.Add(new TabPage("Form4"));
    PopulateFormIntoTab(new Form2());
}

最后,在选定的选项卡索引更改:

private void TabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    Form form = null;
    switch (tabControl1.SelectedIndex)
    {
        case 1:
            form = new Form3();
            break;
        case 2:
            form = new Form4();
            break;
        default:
            form = new Form2();
            break;
    }
    PopulateFormIntoTab(form);
}