zoukankan      html  css  js  c++  java
  • 通过反射给窗体赋值

    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;
          }
       }
  • 相关阅读:
    Day5:面向对象的定义(下)
    SQL 查询中not in 与 not exists 的区别
    SQL 语句的执行顺序
    SQL server 连接 查询
    SQL server 约束
    静态类与非静态类,静态成员及使用方法
    HR面试总结
    值类型与引用类型精解
    面试技巧
    MVC与设计模式的关系及MVC的实现原理和设计原理
  • 原文地址:https://www.cnblogs.com/kakaliush/p/1727735.html
Copyright © 2011-2022 走看看