Assembly ass = Assembly.LoadFrom("UCClassL");
UserControls1 u = (UserControls1 )ass.CreateInstance("UCClassL.MyControls.UserControls1 ", true, BindingFlags.CreateInstance,null, new object[] { "fuck", "b" },null, null);
Panel1.Controls.Add(u);
UserControls1.cs:
public partial class UserControls1 : UserControl
{
public UserControls1 ()
{
InitializeComponent();
}
public UserControls1 (object a, object b)
{
MessageBox.Show((string)a);
}
public void SayHello(string a)
{
MessageBox.Show(a+":Hello!")
}
}
问题1:参数传进来了 可以显示messagebox 但是UserControl1 上的控件(一个button)没有显示出来
问题2:如果调用SayHello(string a)方法
问题3:如果UserControls1 继承的是我自己写的UCBase 用父类多态实现 是否有区别
ps:除了Assembly,还可以使用其他反射方法
3 个解决方案
#1
问题1:构造函数里没有 InitializeComponent(),当然不会加载控件
public UserControls1 (object a, object b)
{
InitializeComponent();
MessageBox.Show((string)a);
}
问题2:什么叫“如果”?是“如何”吧?
既然你已经强制类型转换为UserControl1了,直接u.SayHello就行了……
问题3:你所说的“区别”是指什么?
public UserControls1 (object a, object b)
{
InitializeComponent();
MessageBox.Show((string)a);
}
问题2:什么叫“如果”?是“如何”吧?
既然你已经强制类型转换为UserControl1了,直接u.SayHello就行了……
问题3:你所说的“区别”是指什么?
#2
1. 你的构造函数重载了。调用的是有参数的这个构造函数,它没调这行“InitializeComponent()”初始化UI
#3
囧...
#1
问题1:构造函数里没有 InitializeComponent(),当然不会加载控件
public UserControls1 (object a, object b)
{
InitializeComponent();
MessageBox.Show((string)a);
}
问题2:什么叫“如果”?是“如何”吧?
既然你已经强制类型转换为UserControl1了,直接u.SayHello就行了……
问题3:你所说的“区别”是指什么?
public UserControls1 (object a, object b)
{
InitializeComponent();
MessageBox.Show((string)a);
}
问题2:什么叫“如果”?是“如何”吧?
既然你已经强制类型转换为UserControl1了,直接u.SayHello就行了……
问题3:你所说的“区别”是指什么?
#2
1. 你的构造函数重载了。调用的是有参数的这个构造函数,它没调这行“InitializeComponent()”初始化UI
#3
囧...