27

How to Load other Form inside panel in a primary form.

i was trying something like

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();
}

but it throw exception Top-level control cannot be added to a control at line pnl.Controls.Add(objForm);

djv
  • 15,168
  • 7
  • 48
  • 72
Nisar
  • 5,708
  • 17
  • 68
  • 83

3 Answers3

46

Use this:

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();
}

You are missing objForm.TopLevel = false;

wonea
  • 4,783
  • 17
  • 86
  • 139
4

Set TopLevel = False in frmsubject then try

frmSujbect objForm = new frmSujbect();
pnl.Controls.Add(objForm);
objForm.Show();
wonea
  • 4,783
  • 17
  • 86
  • 139
Sathish
  • 4,419
  • 4
  • 30
  • 59
1

I did the following:

Method:

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);
}

Initialize the 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());
}

Finally, on selected tab index change:

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);
}
Ali Kleit
  • 3,069
  • 2
  • 23
  • 39