Как открыть форму внутри формы? - PullRequest
12 голосов
/ 22 июня 2011

У меня есть родительская форма, и мне нравится открывать дочернюю форму в родительской форме.

Можно ли это сделать?Если да, пожалуйста, ответьте мне с примером кода.

Ответы [ 7 ]

11 голосов
/ 22 июня 2011

Ниже приведен код для выполнения того, что вы хотите:

Предположим, что button1 находится в родительской форме.

private void button1_Click(object sender, EventArgs e)
        {
            this.IsMdiContainer = true;
            Form Form2 = new Form();
            Form2.MdiParent = this;
            Form2.Show();
        }

Также следующая ссылка предоставит вам более подробную информацию о том, что выхочу сделать:

http://www.codeproject.com/KB/cs/mdiformstutorial.aspx

Надеюсь, это поможет ...

6 голосов
/ 22 июня 2011

Это зависит от того, что вы подразумеваете под «внутри формы». Если вам нужно, чтобы дочерняя форма отображалась как элемент управления родительской формы, я думаю, вы можете попробовать ParentForm.Controls.Add(new ChildForm()). Или, возможно, даже поместите дочернюю форму в существующий контейнер в родительской форме, снова используя коллекцию Controls содержащего элемента управления.

НТН

5 голосов
/ 11 сентября 2011

Я отмечаю, что все ответы здесь предполагают, что OP намеревался использовать архитектуру MDI Form , хотя это явно не указано.

И есть еще один способ сделать форму 'Дочерний элемент другой формы: просто установите для его свойства TopLevel значение False, а затем установите для его свойства Parent другой формы.

Form2 f2 = new Form2();
f2.TopLevel = false;
f2.Parent = someOtherForm;
f2.Show();

Между прочим, Я думаю, что вся идея «Формы в формах» является ПЛОХОЙ идеей , и архитектура MDI теперь по праву считается устаревшей MS.

Я считаю, что гораздо лучше сделать вторичные формы собственниками, и если у вас должны быть другие контейнеры внутри формы, используйте UserControls, Panels и т. Д.

3 голосов
/ 22 июня 2011

сообщить дочерней форме, что ее MdiParent является текущей формой.

MDI:

 form2 frm = new form2 ();
    frm.MdiParent = this;
    frm.Show();
2 голосов
/ 22 июня 2011

Модальное диалоговое окно:

var form = new Form1();
form.Parent = this;
form.ShowDialog();

MDI дочерний:

var newMDIChild = new Form1();
newMDIChild.MdiParent = this;
newMDIChild.Show();
0 голосов
/ 28 февраля 2018
var childform = new  form2();
childform.TopLevel=false;
this.Controls.add(childform);
childform.Show();

Это работает для меня.

0 голосов
/ 22 июня 2011
Form child = new Form();
child.MdiParent = this;
child.Show();

Запишите эти строки кода в родительской форме и проверьте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...