http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

楼主: 站长苏飞

[Winform] C#反射动态调用窗体,动态实例化窗体的方法

[复制链接]
发表于 2013-8-12 09:19:11 | 显示全部楼层

给力,加油站长


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-8-19 11:52:47 | 显示全部楼层

现在在考虑传值的问题,需要将user的几个值传到打开后的FORM。。。
 楼主| 发表于 2013-8-19 12:47:08 | 显示全部楼层
chenwu0815 发表于 2013-8-19 11:52
现在在考虑传值的问题,需要将user的几个值传到打开后的FORM。。。

Form doc = (Form)Assembly.Load(path).CreateInstance(name);
doc就是窗体对象,直接调用里面的变量赋值就行了

            doc.Show();
发表于 2013-8-20 14:16:40 | 显示全部楼层
站长苏飞 发表于 2013-8-19 12:47
Form doc = (Form)Assembly.Load(path).CreateInstance(name);
doc就是窗体对象,直接调用里面的变量赋 ...

我之前用的是这样的传值方式  Complaint complaint = new Complaint(username,name,branch,isCharge);complaint.MdiParent = this;
complaint.Show();



Complaint 为我需要打开的Form名称。。
发表于 2013-8-20 14:37:06 | 显示全部楼层
站长苏飞 发表于 2013-8-19 12:47
Form doc = (Form)Assembly.Load(path).CreateInstance(name);
doc就是窗体对象,直接调用里面的变量赋 ...

那我需要怎么修改程序来实现类似的传值呢?
 楼主| 发表于 2013-8-20 15:27:01 | 显示全部楼层
chenwu0815 发表于 2013-8-20 14:37
那我需要怎么修改程序来实现类似的传值呢?

Complaint()这应该是你的构造方法吧,你之前是通过构造方法来传值的,现在不要通过这个来传值就行了,
在Complaint里定义一下Public方法,调用传值来实现
 楼主| 发表于 2013-8-20 15:29:55 | 显示全部楼层
chenwu0815 发表于 2013-8-20 14:37
那我需要怎么修改程序来实现类似的传值呢?

http://www.sufeinet.com/thread-2190-1-1.html或者你看看我的这个文章,学习一下这种方法
发表于 2013-8-20 15:41:37 | 显示全部楼层
站长苏飞 发表于 2013-8-20 15:27
Complaint()这应该是你的构造方法吧,你之前是通过构造方法来传值的,现在不要通过这个来传值就行了,
...

之前子窗体就用通过如下来获取的。

public Complaint(string username, string name, string branch, string IsCharge)
        {
            this.username = username;
            this.name = name;
            this.branch = branch;
            this.IsCharge = IsCharge;
            InitializeComponent();
        }

 楼主| 发表于 2013-8-20 16:13:07 | 显示全部楼层
chenwu0815 发表于 2013-8-20 15:41
之前子窗体就用通过如下来获取的。

public Complaint(string username, string name, string branch, ...

把这个提取成一个Public方法就行了,安我楼上说的去做,
还有就是可以看楼上的文章直接通过反射处理

发表于 2013-8-21 11:12:32 | 显示全部楼层
站长苏飞 发表于 2013-8-20 16:13
把这个提取成一个Public方法就行了,安我楼上说的去做,
还有就是可以看楼上的文章直接通过反射处理

  private void GetUserInfo()
        {
            Assembly assembly = Assembly.Load("Improvement");                  
            Type type = assembly.GetType("Improvement.BaseLIBS.userInfo");      
            object instance = assembly.CreateInstance("Improvement.BaseLIBS.userInfo");        
            object value = type.GetMethod("name").Invoke(instance, null);
        }

我通过你连接的方法,可以获得类中的 “name”的值,那我在Main主窗体中的几个值,如何动态添加到这个类里?还请帮忙?

另外,你说的 Public方法 ,具体如何实现从Main窗体传过去呢?

感谢

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-14 15:16

© 2014-2021

快速回复 返回顶部 返回列表