2010-12-11 6 views
2

Я использую материнскую форму MDI, которая имеет Чайлдс и они показывают очень хорошо, когда они вызываются этим родителем, и я использую для intensiate дочерней формы, как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(); 

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

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

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

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

ответ

6

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

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

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

+0

ОК это прекрасно работает, но что, если форма от вас будет называть дочернюю дозу, у которой нет родителя, можно сказать, что у родителя есть всплывающее сообщение, которое не является дочерним элементом этой формы, как тогда, какая схема должна быть принята? –

+0

Лоты способов. Очевидным способом является передача ссылки на родителя через конструктор формы. Даже Application.OpenForms [0] будет работать. Предоставляя родительскому статическому свойству, должен быть только один родитель MDI. Предоставление родителям помощи в создании детей - лучший способ. Это специальное событие, о котором я упомянул. Или возвращаемое значение ShowDialog(). –

0

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

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

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

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

+0

Да, я был неправ в собственности именем.Я пытался сделать свой код, но ничего не помогло me.instead он показал мне новый вид диалога с двойными ячейками управления –

+0

Мой код показывает новую форму, потому что код создает новый экземпляр MdiForm. Если экземпляр MdiForm уже существует, вы должны установить свойство Parent для уже существующего MdiForm, как я уже сказал в первом предложении. – comecme

0

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

childform obj = new childform(); 
       obj.MdiParent = this; 
       obj.StartPosition = FormStartPosition.CenterScreen; 
       obj.Show(); 
Смежные вопросы