C# 如何从未知形式获取布尔值?

C# 如何从未知形式获取布尔值?,c#,winforms,C#,Winforms,我有一个 foreach (Form discoveredForm in Application.OpenForms) { if (discoveredForm.Name != "MainForm") { discoveredForm.Hide(); } } 而被发现的形式有一个 public bool isRenamed; 那么,可以从发现的表单中获取布尔值(IsRename)吗?好的,我认为这可能会对您有所帮助。 尽管您在这样做之前想知道表单的名称

我有一个

foreach (Form discoveredForm in Application.OpenForms)
{
    if (discoveredForm.Name != "MainForm")
    {
        discoveredForm.Hide();
    }
}
而被发现的形式有一个

public bool isRenamed;

那么,可以从发现的表单中获取布尔值(IsRename)吗?

好的,我认为这可能会对您有所帮助。 尽管您在这样做之前想知道表单的名称

            foreach (Form discoveredForm in Application.OpenForms)
        {
            if (discoveredForm.Name != "MainForm")
            {
             var S = (Form2)discoveredForm;
             MessageBox.Show(S.isRenamed.ToString());
            }
        }
现在我知道我正在寻找的另一个表单名为Form2,但我不知道有多少是打开的,但这会影响到它们中的每一个,并显示布尔值。如果你想换衣服,就这么做

            foreach (Form discoveredForm in Application.OpenForms)
        {
            if (discoveredForm.Name != "MainForm")
            {
                discoveredForm.Hide();
                var S = (Form2)discoveredForm;
                S.isRenamed = True;
            }
        }

IsRename应该是属性,而不是字段。您隐藏的所有表单都是同一类型的吗?如果不是,IsRename字段的类型是什么?请查看反射类。它们允许您在运行时发现类的属性、方法等。或者,使用此属性创建基窗体类的继承版本,并调整需要它从该类继承的窗体。我建议编写一个接口
接口IRenamable{bool isrename{get;set;}}
,并在每个窗体中实现它。然后像这样迭代:
foreach(Application.OpenForms中的formdiscoveredform){if(discoveredForm是可重新命名的ir){…}
。使用Try-Catch是一种不好的方法。您可以简单地检查类型。