2013-11-26 2 views
1

안녕하세요, 저는 MDI 부모로부터 양식을 열려고합니다.루프없이 MDI Parrent에서 MDI 자식 폼을 활성화하는 방법

For가 이미 열려 있으면 활성화해야합니다. 또는 새 양식을 엽니 다. 이제 루프를 foreach 루프를 사용하고 있습니다. 하지만 난 루프를 사용하고 싶지 않아.

foreach (Form frm in Application.OpenForms) 
       { 
        if (frm is FrmPrd) 
        { 
          frm.Activate(); 
          frm.BringToFront(); 

        }  
         else 
         { 
          FrmPrd _OFrmPrd = new FrmPrd(); 
          _OFrmPrd.Show(); 
          return; 
         } 
        } 
       } 

plz. 루프없이 사용하는 방법을 제안 해주세요.

var form = Application.OpenForms.OfType<FrmPrd>().FirstOrDefault(); 
    if (form == null) new FrmPrd().Show(); 
    else { 
     form.WindowState = FormWindowState.Normal; 
     form.Activate(); 
    } 

을 또는 그것은 또한 응용 프로그램의 버그를 피할 수 있기 때문에 당신이 전혀 루프에 우수한 솔루션을하지 않아도 단지 인스턴스의 트랙을 잃지 말고 :

답변

0

사용 Linq에 루프를 숨 깁니다. OpenForms :

FrmPrd productForm; 

    private void ShowProductButton_Click(object sender, EventArgs e) { 
     if (productForm == null) { 
      productForm = new FrmPrd(); 
      productForm.FormClosed += (s,ea) => productForm = null; 
      productForm.Show(); 
     } 
     else { 
      productForm.WindowState = FormWindowState.Normal; 
      productForm.Activate(); 
     } 
    } 
관련 문제