将参数从MDIParent传递到MDIChild表单

时间:2017-03-19 21:34:31

标签: c#

在C#Windows应用程序中,我有一个登录表单,MdiParent表单和几个Mdichild表单。当用户成功登录时,启动Mdi Parent表单,然后用户可以通过单击MDI Parent上的按钮启动子表单。在MDI Parent表单中,我有一个方法:

public void ShoworActivate<T>(string loggedUser)where T: Form
{
   var k = MdiChildren.Where(c==>c.GetType() == typeof(T)).FirstorDefault();
   if(k= null)
    {
      k = (Form)Activator.CreateInstance(typeof(T));
      ......More code
    }
}

我需要将参数字符串loggedUser传递给子表单但是当我将参数放在子表单的构造函数中时,我收到一个错误: {&#34;没有为此对象定义无参数构造函数。&#34;}

我该如何解决这个问题? 我不想使用Child Form = new ChildForm(string loggedUser)。这样可行。

2 个答案:

答案 0 :(得分:0)

您正在使用反射创建表单实例来完成工程设计。您可以使用工厂来创建表单。

无论如何,对于当前的问题,您需要使用另一个版本的CreateInstance方法,该方法还需要在目标类型的构造函数中传递参数。

k = (Form)Activator.CreateInstance(typeof(T), System.Reflection.BindingFlags.CreateInstance, null, loggedUser);

您可以在https://msdn.microsoft.com/en-us/library/system.activator.createinstance(v=vs.110).aspx

中引用CreateInstance方法的各种覆盖

答案 1 :(得分:0)

的CreateInstance(typeof运算(T),loggedUser);