如何使用反射获取表单的IWin32Window

时间:2013-11-21 21:50:16

标签: c# forms reflection .net-3.5 non-modal

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

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'

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

1 个答案:

答案 0 :(得分:2)

您可能希望搜索Application.OpenForms集合。

Form f = Application.OpenForms.Where(x => x.GetType().Name == "ParentForm").FirstOrDefault();