• 通过反射给窗体赋值


    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 puhlish
    {
       
    /// <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;
          }
       }
  • 相关阅读:
    MVC模式在Java Web应用程序中的实例分析
    设计模式
    实现xxxxxxx系统六大质量属性战术
    阅读了《大型网站技术架构:核心原理与案例分析》,分析XX系统如何增加相应的功能,提高系统的可用性和易用性
    淘宝系统质量属性分析
    《架构漫谈》读后感
    软件架构师架构设计过程是什么?
    《架构之美》阅读笔记06
    《架构之美》阅读笔记05
    《架构之美》阅读笔记04
  • 原文地址:https://www.cnblogs.com/kakaliush/p/1727735.html
Copyright © 2020-2023  润新知