关于Assembly.CreateInstance()的问题

littlusion 2004-12-24 03:03:10
怎么样通过表单中的控件名称获得控件对像?具体问题如下:

Assembly _assembly=Assembly.LoadFrom("C:\Employee.dll");

//EmployInfo是Form名
Object obj=_assembly.CreateInstance("Employee.EmployInfo");
//通过这种方式可以得到form对像

//txtName是TextBox名
object obj1=_assembly.CreateInstance("Employee.EmployInfo.txtName");
//为什么这样不能得到TextBox对像?

我应该怎么做呢,谢谢!
...全文
184 点赞 收藏 13
写回复
13 条回复
littlusion 2004年12月30日
虽然没能得到答案,还是结贴!
回复 点赞
marvelstack 2004年12月25日
http://www.c-sharpcenter.com/CSNET/dynamicinvoke.asp
http://www.c-sharpcorner.com/Code/2002/April/LoadingAssemblyInfo.asp
回复 点赞
littlusion 2004年12月24日
上面这样更正后也不行,
PropertyInfo pi = obj.GetType().GetProperty("txtName");
这句运行后pi的值为 null,它取不到相关名字控件的property,另外,表单form中的控件一般都是private的,怎么会是public的呢?
回复 点赞
jimh 2004年12月24日
PropertyInfo pi = ctl.GetType().GetProperty("txtName"); //txtName属性名
写错
更正为:
PropertyInfo pi = obj.GetType().GetProperty("txtName"); //txtName属性名
回复 点赞
littlusion 2004年12月24日
谢谢楼上的执着,我们能不能讨论一下,我的msn:littlusion@hotmail.com
回复 点赞
Richardhu 2004年12月24日
FieldInfo myFieldInfo1 = typeof("Employee.EmployInfo").GetField("txtName",System.Reflection.BindingFlags.CreateInstance);
myFieldInfo1.GetValue(obj1);
回复 点赞
littlusion 2004年12月24日
楼上的方法还是不行,我的目的是想获取装配件Employee.dll中EmployInfo表单上控件的相应属性,控件的名字是通过变量key传递过来的.
回复 点赞
Richardhu 2004年12月24日
object obj1 = obj.txtName;
回复 点赞
Richardhu 2004年12月24日
Employee.EmployInfo obj=(Employee.EmployInfo)Assembly.GetAssembly(typeof(Employee.EmployInfo)).CreateInstance("Employee.EmployInfo");
obj.txtName = new TextBox();
object obj1 = Employee.EmployInfo.txtName;
回复 点赞
littlusion 2004年12月24日
请问楼上,
PropertyInfo pi = ctl.GetType().GetProperty("txtName"); //txtName属性名

ctl是什么东东啊?谢谢!
回复 点赞
jimh 2004年12月24日
1, 首先你的控件是public,相信这一点应该没问题,
2, Assembly _assembly=Assembly.LoadFrom("C:\Employee.dll");
Object obj=_assembly.CreateInstance("Employee.EmployInfo");
PropertyInfo pi = ctl.GetType().GetProperty("txtName"); //txtName属性名
TextBox tb = (TextBox)pi.GetValue(obj, null);
tb就是你想要的控件对象了
回复 点赞
littlusion 2004年12月24日
Employee.EmployInfo.txtName只是一个字符串,

Employee.EmployInfo.txtName = new TextBox(); //这条语句运行是不正确的吧
回复 点赞
Richardhu 2004年12月24日
Employee.EmployInfo.txtName不是类名,所以不能创建.
Employee.EmployInfo.txtName = new TextBox();
object obj1 = Employee.EmployInfo.txtName;
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告