c# - Application.OpenForms 中的 Foreach frmCustomForm
问题描述
我正在尝试在打开的表单中搜索以查找特定类型的表单 [例如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 无法对“方法组”进行操作。
解决方案
因为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();
推荐阅读
- python - 为什么整数除法在许多脚本语言中舍入?
- android - 选择其中文档字段包含 Firestore 中的字符串?
- java - 如何让程序在继续之前等待输入
- python - 在我的 pygame 程序中添加了“碰撞边界”代码,现在屏幕上的精灵在需要时不会改变
- java - 如何在单独的 Java 类的 OnClick() 方法中实现 startActivity()?
- c - 我不能用c语言从图书馆管理系统中删除书籍
- javascript - 反应组件响应能力 - 在主渲染元素调整大小时更改状态
- angularjs - 自定义排序顺序不起作用
- python - Why i cannot see green rectangle in main window?
- apache-spark - 如何将多行标签xml文件转换为数据框