2011-12-28 4 views
3

すべてのフォームを非表示または表示する方法(フォームの子を含む)を作成しました。.Hide()から.Show()に変更されたフォームは最大化できません、なぜですか?

SetAllFormsState(FormState.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(); 
     } 
    } 
} 

しかし:コードは次のようです。子フォームはウィンドウ/タスクバーに表示されますが、ウィンドウによって「ロック」されているようですが、最大化することも、通常のスタイルに変更することもできません。 どうすれば修正できますか?

答えて

2

form.WindowStateを設定してみてくださいShow()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を使って試しました。しかし、違いはありません。 –

+0

@Matan:なぜCWですか? – abatishchev

+0

@abatishchev私は他の人が自分のソリューションを編集できるようにしたい。 – Matan

関連する問題