我正在尝试搜索打开的表单,以查找frmMain
中特定类型的表单[例如Application.OpenForms
],以便可以调用特定于该表单类型的函数
foreach (frmMain mainForm in Application.OpenForms)
{
// code stuff
}
这会在找到正确类型的表单时正确地执行操作,但是在尝试其他类型的表单时,它会尝试传递它们,而不是不考虑它们,而是说
无法投射类型为Project.frmNotMain'的对象来键入 “ Project.frmMain”。
如何阻止foreach尝试传递错误的表单?
我尝试过
foreach (frmMain mainForm in Application.OpenForms["frmMain"])
和
foreach (frmMain mainform in Application.OpenForms.OfType<frmMain>)
两者都不起作用,因为foreach无法对“方法组”进行操作。
答案 0 :(得分:2)
由于OfType<T>
是方法(不是属性 ),因此当您要执行时应添加()
它:
foreach (frmMain mainform in Application.OpenForms.OfType<frmMain>()) {
// code stuff
}
如果您最多有一个frmMain
的一个实例(“ main”通常表示“ one”-在许多形式中只有一个是“ main”),则可以简化循环进入
// Either instance of frmMain or null
frmMain mainform = Application.OpenForms
.OfType<frmMain>()
.FirstOrDefault();