关于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对像?

我应该怎么做呢,谢谢!
...全文
253 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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;

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧