5

フォームが開いているかどうか、およびフォームを閉じるために開いているかどうかを確認するにはどうすればよいですか?

次のコードを試してみましたが、フォームが開いていることがわかっている場合でも、フォームが開いていないと言い続けます。

 foreach(Form a in Application.OpenForms) 
 {
     if (a is YouLikeHits_Settings) 
     {
         // About form is open
         MessageBox.Show("form open");
         break;
     }
     // About form is not open...
     MessageBox.Show("form not open");
     break;
 }
4

3 に答える 3

20

Application.OpenFormsには、開いているフォームが含まれています。このコレクション内のフォームの場合、それが開かれます。それ以外の場合は開かれません (閉じている可能性があります)。

if (Application.OpenForms.OfType<YouLikeHits_Settings>().Any())
    MessageBox.Show("Form is opened");
else
    MessageBox.Show("Form is not opened");
于 2012-11-18T22:13:10.417 に答える
1

これは確実に動作します

            if (Application.OpenForms.OfType<frm_YouLikeHits_Settings>().Any())
            {
                Application.OpenForms.OfType<frm_YouLikeHits_Settings>().First().Close();
            }
            frm_YouLikeHits_Settings f1= new frm_YouLikeHits_Settings();
            f1.MdiParent = this;
            f1.Show();
于 2016-06-30T06:00:19.153 に答える