函数获取窗体的实例
本文关键字:实例 窗体 获取 函数 | 更新日期: 2023-09-27 18:04:24
我想构建一个构建一个函数,它返回给我一个已经存在的窗体实例。
fx = getForm(Form1);
这里我得到错误'FensterTest。Form1'是一个'类型',但像'变量'一样使用所以我需要一些铸造,但我不知道我需要铸造什么。
private Form getForm(Form f)
{
foreach (Form a in Application.OpenForms)
{
if (a is f)
{
f fx = (f)a;
return fx;
}
}
return null;
}
当我使用"f"时,我得到一个"类型或命名空间名称'f'未找到"
"f fx = (f)a;"原来是"Form1 fx = (Form1)a;",这工作得很好,但由于我也需要使用Form2 Form3,…
您可能希望从特定类型的OpenForms
集合中找到Form
。所以你需要传入类型——你可以传入一个Type
对象,或者你可以使这个方法泛型,这样你就可以传入一个类型参数。发送类型参数的好处是可以实现类型安全(在需要时返回您搜索的具体类型)。下面是一个通用的解决方案:
private TForm getForm<TForm>()
where TForm : Form
{
return (TForm)Application.OpenForms.OfType<TForm>().FirstOrDefault();
}
注意,OfType
和FirstOrDefault
是LINQ的扩展方法,确保你导入了System.Linq。像这样使用上面的方法:
Form f = getForm<Form1>();