2011-10-19 22 views
0

"X"ボタンをクリックしたときにMDI子フォームのクローズイベントをチェックし、親フォームに閉じたことを知らせる方法を教えてください。MDI子フォームC#

答えて

4

を行うことができ、フォームのFormClosingイベントであなたが単にMDIでFormClosedイベントに耳を傾けることができます。

var childForm = new ChildForm(); 
childForm.FormClosed += new FormClosedEventHandler(form_FormClosed); 
childForm.Show(); 
0

あなたは

TheMainForm form = (TheMainForm)this.MdiParent() 
form.AlertMe(this); 
+0

C#にはAlertMe()メソッドがありません。私はMDiParentメソッドを見つけることができず、プロパティのみしか見つかりません。 – NexAddo

+0

自分で作成して公開する –

0

は、コードをチェックしませんでしたが、うまく

0

ハード、以下のコードはどのように親フォームが表示されていることをすべきではない

Form mdiChild = new Form(); 
mdiChild.MdiParent = this; 
mdiChild.Closed += (s, e) => { //... }; 
mdiChild.Show(); 

MainFormを

内からchildformに閉じられたイベントをアタッチ子フォームが閉じられているかどうかを認識し、その親フォームに新しい子フォームが追加されていることも認識できます。

private List<Form> ChildFormList = new List<Form>(); 

private void MyForm_MdiChildActivate(object sender, EventArgs e) 
{ 
    Form f = this.ActiveMdiChild; 

    if (f == null) 
    { 
    //the last child form was just closed 
    return; 
    } 

    if (!ChildFormList.Contains(f)) 
    { 
     //a new child form was created 
     ChildFormList.Add(f); 
     f.FormClosed += new FormClosedEventHandler(ChildFormClosed); // here the parent form knows that that child form has been closed or not 
    } 
    else 
    { 
    //activated existing form 
    } 
} 
private void ChildFormClosed(object sender, FormClosedEventArgs e) 
{ 
    //a child form was closed 
    Form f = (Form)sender; 
    ChildFormList.Remove(f); 
} 
関連する問題