问题
How do I check if a form is open, and if it is open to close the form?
I tried the following, testing out some code but it keep saying the form is not open even when I know it is:
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;
}
回答1:
Application.OpenForms contains opened forms. If form in this collection, then it is opened. Otherwise it is not opened (possibly closed).
if (Application.OpenForms.OfType<YouLikeHits_Settings>().Any())
MessageBox.Show("Form is opened");
else
MessageBox.Show("Form is not opened");
回答2:
This will work sure
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();
回答3:
try
{
if (Application.OpenForms.OfType<talkForm>().Any())
{
talkForm frm = new talkForm();
frm.Close();
MessageBox.Show("Form is opened");
}
else
{
talkForm frm = new talkForm();
frm.Show();
MessageBox.Show("Form is not opened");
}
}
catch(Exception ex)
{
}
来源:https://stackoverflow.com/questions/13445155/how-to-check-if-form-is-open-if-open-close-form