2011-05-05 3 views
-1

사실 그 첫 번째 프로젝트. VB.Net2008을 C# 2010로 변환하고 싶지만 몇 가지 설명이 있습니다.MDIChild C# VS2010을 닫는 방법?

Form2 속성 - IsMDIContainer = True을 설정합니다. 그럼 아래 코드는 내 MdiChild을 열고 지금 닫기 버튼을 클릭하면 내 문제는 무엇입니까, 그것은 또한 MDIParent 닫고있어. 하지만 mdichild 만 닫아야합니다 ... Vb.Net2008 스타일처럼 다음 코드를 사용하여 시도했습니다. MDIParentForm2, 작동하지 않습니다. 올바른 길 찾기 ...

private void toolStripButton1_Click(object sender, EventArgs e) 
{ 
    Form3 NwMdiChild2 = new Form3; 
    NwMdiChild2.MdiParent = this; 
    NwMdiChild2.Dock = System.Windows.Forms.DockStyle.Fill; 
    NwMdiChild2.Show(); 
} 

private void Form2_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e) 
{ 
    Form[] MdiChildForms = this.MdiChildren; 
    int kkk1 = MdiChildForms.Length; 
    int x = 0; 
    for (x = 0; x <= MdiChildForms.Length - 1; x += 1) 
    { 
    if (MdiChildForms[x].Name == "Form1") 
    { 
     kkk1 = kkk1 - 1; 
    } 
    MdiChildForms[x].Close(); 
    } 
    if (kkk1 > 0) 
    { 
    // For Not Closing 
    e.Cancel = true; 
    } 
    else 
    { 
    // For Closing 
    e.Cancel = false; 
    Application.Exit(); 
    } 
} 

Right Directions for Me?

답변

1

달성하고자하는 바를 잘 이해하고 있는지 잘 모르겠습니다. 부모 양식 닫기 버튼을 클릭하고 부모 양식을 닫으면 모든 아동의 양식을 닫으시겠습니까? Form2가 기본 폼 (부모 MDI 컨테이너)이고, Form3이 MDI 자식입니다. 그렇지 않습니까? ,

private void toolStripButton1_Click(object sender, EventArgs e) 
{ 
    Form3 NwMdiChild2 = new Form3(); //don't forget() 
    NwMdiChild2.MdiParent = this; 
    NwMdiChild2.Dock = System.Windows.Forms.DockStyle.Fill; 
    NwMdiChild2.Show(); 
} 

private void Form2_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //if no MDI child - this is going to be skipped and norlmal Form2 close takes place 
    if (this.MdiChildren.Length > 0) //close childrens only when there are some 
    { 
     foreach (Form childForm in this.MdiChildren) 
      childForm.Close(); 

     e.Cancel = true; //cancel Form2 closing 
    } 
} 
+0

안녕 감사 종류 Reply..Actually ToolStrip1이 Form2를 사용할 수 있으며, mdichild의 form3을 도킹 한 후이 Toolstrip1 여전히 또한 Form3로 유지된다
다음 코드를 시도하고 당신이 요구하는 무엇인지 알려주세요 왜냐하면 form3 FormBorderStyle = None thats good. 그러나 닫는 form3 닫는 동안 – Paramu

+0

안녕하세요 주셔서 감사합니다. 응답. 실제로 ToolStrip1 Form2에서 사용할 수 있으며 mdichild form3 도킹 후 FormBorderStyle = 없음 및이 Toolstrip1 여전히 Form3 여전히 남아 있습니다. 하지만 여전히 form3 닫는 MdiParent 또한 닫습니다. Thanks for Reply – Paramu

+0

나는 그것을 얻지 못한다 :) Form3.FormBorderStyle = None이면 Form3 닫기 버튼이 없다. 그럼 어떻게 닫을 수 있니? Form3에 버튼을 닫으시겠습니까? '예'인 경우 클릭 이벤트에 'this.Close();'를 넣으면 작동합니다. – mj82