Foreach frmCustomForm в приложении. Открытые формы - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь найти открытые формы в поисках определенных типов формы [например, frmMain] в Application.OpenForms, чтобы я мог вызвать функцию, специфичную для этого типа формы

    foreach (frmMain mainForm in Application.OpenForms)
    {
        // code stuff
    }

thisделает вещи правильно, когда находит правильный тип формы, но когда он пытается использовать другие типы формы, вместо того, чтобы не учитывать их, он пытается передать их и говорит:

Невозможно привести объект типаProject.frmNotMain 'для ввода' Project.frmMain '.

как мне остановить foreach от попытки пропустить неправильные формы?

Я пытался

    foreach (frmMain mainForm in Application.OpenForms["frmMain"])

и

    foreach (frmMain mainform in Application.OpenForms.OfType<frmMain>)

оба не работают, потому что foreach не может работать с «группой методов».

1 Ответ

0 голосов
/ 25 февраля 2019

Поскольку OfType<T> - это метод (не свойство ), вы должны добавить (), когда хотите выполнить it:

  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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...