zoukankan      html  css  js  c++  java
  • 反射当前程序集中的Form

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
    
    namespace TestWinform2
    {
        public partial class FrmMain : Form
        {
            public FrmMain()
            {
                InitializeComponent();
                this.StartPosition = FormStartPosition.CenterScreen;
                IniForm();
            }
    
            private void IniForm()
            {
    
                Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
                foreach (var item in assemblies)
                {
                    var name = item.GetName();
                    if (name.Name == "TestWinform2")
                    {
                        Type[] types = item.GetTypes();
                        types = types.OrderBy(f => f.FullName, Comparer<string>.Default).ToArray();
                        int j = 0;
                        foreach (var t in types)
                        {
                            if (t.BaseType == typeof(Form))
                            {
                                System.Windows.Forms.RadioButton radioButton1 = new RadioButton();
                                radioButton1.AutoSize = true;
                                radioButton1.Location = new System.Drawing.Point(20, 20 + j * 20);
                                radioButton1.Name = "radioButton" + j;
                                radioButton1.Size = new System.Drawing.Size(95, 16);
                                radioButton1.TabIndex = 0;
                                radioButton1.TabStop = true;
                                radioButton1.Text = t.FullName;
                                radioButton1.Tag = t;
                                radioButton1.UseVisualStyleBackColor = true;
                                radioButton1.MouseDown += new MouseEventHandler(radioButton1_MouseDown);
                                this.Controls.Add(radioButton1);
                                j++;
                            }
                        }
                    }
                }
            }
    
            void radioButton1_MouseDown(object sender, MouseEventArgs e)
            {
                Control control = sender as Control;
                Type t = control.Tag as Type;
                Form form = Activator.CreateInstance(t, null, null) as Form;
                form.FormClosed += new FormClosedEventHandler(form_FormClosed);
                form.StartPosition = FormStartPosition.CenterScreen;
                form.Show();
                this.Hide();
    
            }
    
            void form_FormClosed(object sender, FormClosedEventArgs e)
            {
                
                this.Show();
            }
        }
    }

    我们经常写一些类去测试,比如winform 的但是每次都修改一下Program.cs很麻烦,就这样,写了个反射,每次选一下要测试那个类就测试哪个类,方便了,哇咔咔

  • 相关阅读:
    Drupal 学习笔记 (4)
    property和field有什么区别
    Razor4Orchard v1.2
    Mono喜迁新家http://www.xamarin.com/
    jq中获取属性名的方法
    jquery中的文档操作之五
    PHP基础知识之三
    php基础知识之一
    注意点
    jquery中ajax的学习之$.ajax()
  • 原文地址:https://www.cnblogs.com/crazycxy/p/relect_current_assembly.html
Copyright © 2011-2022 走看看