我有一个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'
有关如何实现这一目标的任何建议吗?
答案 0 :(得分:2)
您可能希望搜索Application.OpenForms
集合。
Form f = Application.OpenForms.Where(x => x.GetType().Name == "ParentForm").FirstOrDefault();