通过反射技术创建窗体实例然后给控件赋值(C#)
通过反射技术创建窗体实例然后给控件赋值(C#)
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Reflection; namespace CSFramework.Tech2011 { /// <summary> /// 测试窗体 /// </summary> public partial class frmTest : Form { public frmTest() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //不直接创建 // frmReflactForm form = new frmReflactForm(); //为了演示,通过反射创建一个窗体 object o = typeof(frmReflactForm).Assembly.CreateInstance("puhlish.frmReflactForm"); frmReflactForm form = o as frmReflactForm; form.Show(); } private void button2_Click(object sender, EventArgs e) { //在Assembly内通过Application查找frmReflactForm Form findform = GetReflactForm("frmReflactForm"); if (findform != null) //找到, 哈哈 SetFormValue(findform, "textBox2", textBox1.Text); } private void SetFormValue(Form form, string controlName, object value) { //重点部分!!!! FieldInfo[] fs = form.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public); //代码值千金啊! foreach (FieldInfo fi in fs) { if (fi.Name.ToUpper() == controlName.ToUpper()) { Control[] ctls = form.Controls.Find(controlName, true); if (ctls.Length > 0) //找到, 哈哈 { ctls[0].Text = Convert.ToString(value); //直接赋值 //如想搞得高级点,通过反射赋值.xxx.setvalue(obj,value) } break; } } } //从Application查找窗体 private Form GetReflactForm(string formName) { foreach (Form form in Application.OpenForms) { if (form.GetType().Name.ToUpper() == formName.ToUpper()) { return form; } } return null; } } }
参考文档:
C# 模拟VisualStudio窗体设计器拖放控件 C# Winform动态设置控件的值及反射技术应用 C#.Net反射(Reflaction)技术实例详解 C#.NET反射枚举窗体字段成员变量 C#转换IList对象数组为byte数组.然后通过WebService传递 通过反射,调用DLL程序集某个类的静态方法打开窗体 C# Winform中如何获取父窗体中控件的信息 基于透明代理技术创建的WCF实例打开与关闭WCF通道 C/S客户端Winform窗体调用WebApi接口(C# 实例) 通过.NET反射动态调用SetValue方法给属性PropertyInfo赋值 C#.NET通过CodeDom.Compiler动态编译计算表达式的值 C#异步操作等待窗体,异步多线程处理数据通用界面(frmThreadOperating) C# Model对象实例转换为URL网址参数Param形式 C# 按住鼠标左键移动窗体Form的位置,C#拖动窗体通用类 Activator.CreateInstance 使用指定类型的默认构造函数来创建该类型的实例
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |