Добавьте панель в Form1 и вызовите этот код где-нибудь (например, в обработчике нажатия кнопки) в Form1:
Form2 form2 = new Form2() { TopLevel = false };
form2.Show();
panel.Controls.Add(form2);
Добавление формы в качестве дочернего элемента другого элемента управления не допускается. Я думаю, вам нужно создать UserControl и добавить UserControl в качестве дочернего элемента панели.
Создайте свою форму (Form1) с кнопкой (Button1) и панелью (panel1).
Затем создайте UserControl (UserControl1). Это вместо вашей «Формы 2».
В обработчике события click для Button1 вы добавляете следующий код:
private void button1_Click(object sender, EventArgs e)
{
// Check that nothing has been added yet.
if (panel1.Controls.Count == 0)
{
UserControl1 uc1 = new UserControl1();
uc1.Dock = DockStyle.Fill;
panel1.Controls.Add(uc1);
}
}
Да, это разрешено. Вам просто нужно установить его свойство TopLevel
в false
, преобразовав его в UserControl (плюс-минус). Однако UserControl — лучший выбор.
Хотя было забавно :-). Сегодня узнал кое-что новое.
Я бы не рекомендовал это, но вы даже можете добавить form2.FormBorderStyle = FormBorderStyle.None; чтобы избавиться от границы окна и элементов управления окном. Тогда это выглядит точно так же, как мой ответ UserControl.