Как разрешить ShowDialog в дочернем элементе MdiContainer?

#c# #winforms #mdi

#c# #winforms #mdi

Вопрос:

У меня есть форма, которая this.IsMdiContainer = true . Я показываю в нем дочернюю форму.

  FrmCustomer frm=new FrmCustomer();
 frm.MdiParent = this;
 frm.Show();
 

Я хочу показать форму showdialog в FrmCustomer. Я использую этот код,

   FrmCustomerDetail frm=new FrmCustomerDetail(null);
  frm.MdiParent = this.MdiParent;
  frm.ShowDialog();
 

но я получаю сообщение об ошибке,

Форма, которая не является формой верхнего уровня, не может отображаться как модальное диалоговое окно. Удалите форму из любой родительской формы перед вызовом ShowDialog. ‘

Комментарии:

1. оставьте, frm.MdiParent = this.MdiParent и он будет работать. Вы не можете ShowDialog MdiChildren

2. @GuidoG Спасибо, но я хочу показать форму в mdicontainer.

3. Объясните, что вы имеете в виду с but i want to show form in mdicontainer

4. когда я использую только showdialog, форма отображается вне контейнера

5. Это цель ShowDialog. Это не может быть легко изменено

Ответ №1:

Одним из способов сделать это было бы оставить наш MdiOwner и установить владельца окна, используя параметр метода ShowDialog.

    FrmCustomerDetail frm=new FrmCustomerDetail(null);
   frm.ShowDialog(this);
 

Комментарии:

1. Чем объяснить, что вы имеете в виду. На мой взгляд, это правильный ответ, если вы хотите чего-то другого, пожалуйста, отредактируйте свой вопрос и уточните, что вы хотите

2. Вы не можете использовать Form.ShowDialog в контейнерах MDI.