MDI Parent Form Проблема с настройкой Parent - PullRequest
3 голосов
/ 11 декабря 2010

Я использую родительскую форму MDI, у которой есть дочерние элементы, и они очень хорошо отображаются, когда их вызывает этот родитель, и я использую для усиления дочернюю форму, так как

ChildForm child = new ChildForm();
child.IsMdiContainer= this;
child.Show();

работает хорошо, как толькоони вызываются из родительского контроля, но если я вызываю их из другой формы, которая не является дочерней по отношению к какой-либо родительской форме, они больше не остаются дочерними по отношению к основному родительскому элементу. Одна из очевидных причин заключается в том, что, когда я усиливаю их в этой независимой форме, я просто не могу использоватьchild.MDIParent = this;потому что он будет стремиться сделать независимую родительскую форму, но я также попытался

MDIParentForm form = new MDIParentForm 

ChildForm child = new ChildForm();
child.IsMdiContainer= form ;
child.Show();

, но это также не помогло, вместо этого он выдает исключение, что форма, которую я пытаюсь установить Parent, не является контейнером MDIзатем я попытаюсь изменить

MDIParentForm form = new MDIParentForm ;
form.IsMdiContainer= true;
ChildForm child = new ChildForm();
child.MDIParent = form ;
child.Show();

, и в результате ничего не появится

Любая идея, как ..........

Ответы [ 3 ]

7 голосов
/ 11 декабря 2010

Чтобы создать ребенка от другого ребенка, просто напишите его так:

ChildForm sibling = new ChildForm();
sibling.MdiParent = this.MdiParent;
sibling.Show();

Или вызвать пользовательское событие, на которое родитель может ответить.

0 голосов
/ 15 февраля 2016

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

childform  obj = new childform( );
               obj.MdiParent = this;
               obj.StartPosition = FormStartPosition.CenterScreen;
               obj.Show( );
0 голосов
/ 11 декабря 2010

Вы должны установить Parent как уже существующую mdiform, а не создавать новую.

Если экземпляра mdiform еще нет, вам следует не только создать экземпляр формы, но и показать его.

var mdiForm = new MdiForm();
mdiForm.IsMdiContainer = true;
var childForm = new ChildForm();
childForm.MdiParent = mdiForm;
mdiForm.Show();
childForm.Show();

Также обратите внимание, что я использую mdiForm.IsMdiContainer, у AFAIK нет свойства IsMdiParent.

...