//循环遍历WinForm所有项目中窗体的名称
System.Reflection.Assembly a = System.Reflection.Assembly.LoadFile(Application.ExecutablePath);//.net中的反射
Type[] types = a.GetTypes();
foreach (Type t in types)
{
if (t.BaseType.Name == "Form")
{
MessageBox.Show(t.Name);
}
————————————————
原文链接:https://blog.csdn.net/u013908405/java/article/details/50342293
//循环遍历子窗体中所有活动窗体
foreach(Form f in Application.OpenForms)
{
Console.WriteLine(f.Text);
}
//上面的foreach,在子窗体中没问题,但是不是子窗体会提示集合已修改;可能无法执行枚举操作
//以上也是集合类型的foreach循环的普遍现相,只要集合改变就会报错
//这里就需要使用for循环遍历窗体了
FrmMain frmMain=new FrmMain();
for (int i = 0; i < Application.OpenForms.Count; i++)
{
if (frmMain.Name != Application.OpenForms[i].Text)
{
Application.OpenForms[i].Hide();
}
if (frmMain.Name == Application.OpenForms[i].Text) //若该窗体已被打开
{
frmMain.Activate(); //激活该窗体
isOpened = true; //设置子窗体的打开标记为true
}
}