Foreach frmCustomForm in Application.OpenForms



我正在尝试搜索开放式表单,以查找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();

相关内容

最新更新