2016-02-01 2 views
0

Am новый студент в C# и я использую Microsoft Visual C# 2013.Как отключить форму MdiParent, когда форма ребенок активен

Моя цель состоит в том, чтобы

  1. открыть дочернюю форму внутри его MdiParent форма
  2. отключить форму MdiParent, когда форма ребенок активен/открыт

это было проще в VB.net с

frmStuDetails.ShowDialog() 

Я попытался

1.

MyChildForm childForm = new MyChildForm(); 
childForm.ShowDialog(this); 

Результат .... но проблема в том, что дочерняя форма не открывается в виде MdiParent/контейнер

2. под кнопкой MdiParent вызова

frmViewStuList childForm = new frmViewStuList(this); 
childForm.Owner = this; 
childForm.Show(); 

UNDE г childForm_Activated

if (this.Owner != null) 
{ 
    this.Owner.Enabled = false; 
} 

под childForm_Deactivate

if (this.Owner != null) 
{ 
    this.Owner.Enabled = true; 
} 

Результат ..... это форма ребенок активен, но замораживает MdiParent когда форма ребенок закрывает

3.

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

// In ChildForm_Load: 

private void ChildForm_Load(object sender, EventArgs e) 
{ 
    this.Owner.Enabled = false; 
} 

private void ChildForm_Closed(object sender, EventArgs e) 
{ 
    this.Owner.Enabled = true; 
} 

Результат .... Кажется, это лучший вариант, но детская форма не работает ен в MdiParent

Пожалуйста, помогите, если у вас есть любая другая идея

Благодарности

ответ

0

Блокирующие MDI родитель будет запрещать доступ к MDI ребенка, а также, так что не представляется возможным подходом. И если вы уже «подделываете» MDI-ребенка, я бы предпочел открыть дочернюю форму как модальный диалог. Вы можете создать стиль и центрировать его, чтобы он чувствовал себя как составная часть приложения MDI.

private void openChildDialogToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    var childForm = new ChildForm 
    { 
     ShowInTaskbar = false, 
     MinimizeBox = false, 
     MaximizeBox = false 
    }; 
    childForm.StartPosition = FormStartPosition.CenterParent; 
    childForm.ShowDialog(this); 
} 
+0

Спасибо за ваш ввод У меня есть работа вокруг –