我正在尝试搜索开放式表单,以查找Application.OpenForms
中的特定类型的表单[例如frmMain
],因此我可以调用特定于该表单类型的函数
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无法在"方法组"上操作。
,因为 OfType<T>
是方法(不是 property ),您应该在要 execute 时添加 ()
它:
foreach (frmMain mainform in Application.OpenForms.OfType<frmMain>()) {
// code stuff
}
如果您最多有 frmMain
的一个实例(" main"通常表示"一个" - 在许多形式中,只有一个是" main"),则可以将循环简化为
// Either instance of frmMain or null
frmMain mainform = Application.OpenForms
.OfType<frmMain>()
.FirstOrDefault();