使用反射提取控件
如果我有一个申请表,请输入 Form1
,其中包含 DataGridView
。因此程序集名称将为Test.exe
。通过使用反射,如果我有程序集物理位置和表单名称 Form1
的输入,我可以提取 datagridview
吗?
If I have a application form say Form1
which has DataGridView
. Therefore the assembly name would be Test.exe
. By using Reflection, if I have inputs for physical location of assembly and Form name Form1
, can I extract datagridview
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用
Assembly.LoadFrom
将程序集加载到 AppDomain 中,然后使用Activator.CreateInstance
和 Form1 的完整限定名称创建 Form1 的实例。然后,您可以通过在表单实例上调用GetType()
来获取Form1的类型信息,枚举所有字段并获取DataGridView类型的字段。使用 Form1 的实例和类型信息,您可以获得 DataGridView 的实例。You need to load the assembly into the AppDomain using
Assembly.LoadFrom
and then create an instance of Form1, by usingActivator.CreateInstance
and the full qualified name of Form1. Then you can get the type information of Form1 by callingGetType()
on the instance of the form, enumerate all fields and take the one that is of type DataGridView. Using the instance of Form1 and the type information you can get the instance of DataGridView.