2015-06-22 63 views
0

有什麼辦法可以將這個函數封裝在靜態類中嗎?Application.OpenForms封裝

private void btnAddWorker_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    bool isOpen = false; 

    foreach (Form _f in Application.OpenForms) 
    { 
     if (_f is frmAddWorker) 
     { 
      isOpen = true; 
      _f.Focus(); 
      break; 
     } 
    } 

    if (isOpen == false) 
    { 
     frmAddWorker AddWorker = new frmAddWorker() { MdiParent = this }; 
     AddWorker.Show(); 
    } 
} 

類似的東西:

public class Forms(){public void openForm(form _f){...}} 

我想,以防止打開所有形式的按鈕寫的原代碼。

回答

0
public static void Focus<T>(Form parent) where T : System.Windows.Forms.Form 
{ 
    bool isOpen = false; 
    foreach (var f in Application.OpenForms) 
    { 
     if (f is T) 
     { 
      isOpen = true; 
      (f as Form).Focus(); 
      break;  
     } 
    } 

    if (!isOpen) 
    { 
     T newForm = Activator.CreateInstance<T>(); 
     newForm.MdiParent = parent; 
     newForm.Show(); 
    } 
} 

這樣稱呼它:

StaticClass.Focus<frmAddWorker>(this); 
+0

不會是明智的限制'T'是一種形式? –

+0

並且'break'在這種情況下不起作用。 –

+0

和'.First'將不起作用,因爲它不執行'IEnumerable '。 –