gpt4 book ai didi

c# - 获取表单实例的函数

转载 作者:太空狗 更新时间:2023-10-30 01:09:24 24 4
gpt4 key购买 nike

我想构建一个函数,它会返回一个已经存在的表单实例。

fx = getForm(Form1);

这里我得到错误 'FensterTest.Form1' is a 'type' but is used like a 'variable'所以我需要一些类型转换,但我不知道我需要类型转换什么。

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();
}

请注意,OfTypeFirstOrDefault 是 LINQ 扩展方法,请确保导入 System.Linq。像这样使用上面的方法:

Form f = getForm<Form1>();

关于c# - 获取表单实例的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com