2011-12-28 30 views
3

我寫了一個方法,隱藏或顯示所有形式的應用程序(包括表單子項)。代碼如下:從.Hide()更改爲.Show()的表單不能最大化,爲什麼?

public enum FormState 
{ 
    Show , 
    Hidden, 
    Enable, 
    Disable 
} 

private void SetAllFormsState(FormState formState) 
{ 
    FormCollection forms = Application.OpenForms; 
    FormWindowState formWinState; 
    bool state; 

    if (formState == FormState.Show) 
    { 
     formWinState = FormWindowState.Normal; 
     state = true; 
    } 
    else if (formState == FormState.Hidden) 
    { 
     formWinState = FormWindowState.Minimized; 
     state = false; 
    } 
    else 
    { 
     throw new ArgumentNullException("invalid flag"); 
    } 

    for (int i = forms.Count - 1; i >= 0; i--) 
    { 
     Form form = forms[i]; 
     form.WindowState = formWinState; 

     if (state) 
     { 
      form.Show(); 
     } 
     else 
     { 
      form.Hide(); 
     } 
    } 
} 

,但是當我再次撥打的形式:可以選擇

SetAllFormsState(FormState.Show); 

只有父窗體。子窗體顯示在窗口/任務欄中,但似乎被窗口「鎖定」,無法最大化或更改爲正常樣式。 我該如何解決它?

回答

2

嘗試將form.WindowStateShow()Hide()方法調用:

for (int i = forms.Count - 1; i >= 0; i--) 
{ 
    Form form = forms[i]; 
    if (state) 
    { 
    form.Show(); 
    } 
    else 
    { 
    form.Hide(); 
    } 
    form.WindowState = formWinState; 
} 
1

也許嘗試:

private void SetAllFormsState(FormState formState) 
{ 
    FormCollection forms = Application.OpenForms; 
    FormWindowState formWinState; 
    bool state; 

    switch(formState) 
    { 
     case FormState.Show: 
      formWinState = FormWindowState.Normal; 
      state = true; 
      break; 

     case FormState.Hidden: 
      formWinState = FormWindowState.Minimized; 
      state = false; 
      break; 

     default: 
      throw new ArgumentNullException("invalid flag"); 
      break; 
    } 

    foreach(Form form in forms) 
    { 
     form.WindowState = formWinState; 

     if (state) 
      form.Show(); 
     else 
      form.Hide(); 
    } 
} 
+0

謝謝。我嘗試使用foreach。但沒有區別。 – 2011-12-28 12:35:46

+0

@Matan:爲什麼是CW? – abatishchev 2011-12-28 14:19:18

+0

@abatishchev我想讓其他人編輯我的解決方案。 – Matan 2011-12-28 14:42:58

相關問題