0

我有一个 Windows 窗体,它显示为非模态对话框。因此,我在该表单上调用重载的 Show(IWin32Window owner) 方法。唯一的问题是我想在此处使用的父表单之一在项目中不可访问。因此,我想使用下面的代码使用反射来加载它。

var frm = Assembly.GetEntryAssembly().GetTypes().Where(f => f.Name == "ParentForm").FirstOrDefault();

但是,这会产生以下编译错误。

最好的重载方法匹配

'System.Windows.Forms.Form.Show(System.Windows.Forms.IWin32Window)' 有一些无效参数

参数 1:无法从 'System.Type' 转换为 'System.Windows.Forms.IWin32Window'

关于如何实现这一目标的任何建议?

4

1 回答 1

2

您可能需要搜索该Application.OpenForms集合。

Form f = Application.OpenForms.Where(x => x.GetType().Name == "ParentForm").FirstOrDefault();
于 2013-11-21T21:58:20.527 回答