如何用Type(反射)来遍历某个控件(以TextBox为例)的所有的属性或事件或方法的名称???
哪位朋友可以给个可以执行的代码。
msdn上搜过了,只给出了Console下的例子,而在WINFORM中却不执行了,哪位朋友对反射熟悉???
书上关于这方面的例子极少,
多谢指教!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    static void Main(string[] args)
    {
    Console.WriteLine("属性列表-----------------------");
    Type t=typeof(System.Windows.Forms.Button);
    PropertyInfo[] p=t.GetProperties();
    foreach(PropertyInfo i in p)
    {
    Console.WriteLine(i);
    }
    Console.ReadLine();
    Console.WriteLine("方法列表-----------------------");
    MethodInfo[] m=t.GetMethods();
    foreach(MethodInfo i in m)
    {
    Console.WriteLine(i);
    }
    Console.ReadLine();
    Console.WriteLine("事件列表-----------------------");
    EventInfo[] e=t.GetEvents();
    foreach(EventInfo i in e)
    {
    Console.WriteLine(i);
    }
    Console.ReadLine();


    }
      

  2.   

    using System;
    using System.Reflection;
    using System.Windows.Forms;class Test : Form
    {
      Test()
      {
        TextBox t    = new TextBox();
        t.Parent     = this;
        t.Multiline  = true;
        t.Dock       = DockStyle.Fill;
        t.ScrollBars = ScrollBars.Both;
        Type type    = t.GetType();    t.Text += "[成员列表]" + Environment.NewLine;
        foreach (MemberInfo i in type.GetMembers())
        {
          t.Text += i.Name + Environment.NewLine;
        }    // 其实[成员列表]已经包含以下所有列表, 以下语句可以不要    t.Text += Environment.NewLine;
        t.Text += "[属性列表]" + Environment.NewLine;
        foreach (PropertyInfo i in type.GetProperties())
        {
          t.Text += i.Name + Environment.NewLine;
        }    t.Text += Environment.NewLine;
        t.Text += "[方法列表]" + Environment.NewLine;
        foreach (MethodInfo i in type.GetMethods())
        {
          t.Text += i.Name + Environment.NewLine;
        }    t.Text += Environment.NewLine;
        t.Text += "[事件列表]" + Environment.NewLine;
        foreach (EventInfo i in type.GetEvents())
        {
          t.Text += i.Name + Environment.NewLine;
        }
      }  static void Main()
      {
        Application.Run(new Test());
      }
    }