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是一种不好的方法。您可以简单地检查类型。