我想取一个应用程序的所有窗体应该如何取得呀我试过
foreach (Form frm in MdiChildren)
{}

foreach(Form f in Application.OpenForms)
{}
但这些都不是所有窗体
取所有窗体的原因是我想遍历所有窗体的菜单控件和button控件主要做权限控制
有没有哪位牛人哥哥指点一下

解决方案 »

  1.   

    用反射可以获取所有窗体,不过窗体上的控件都是定义为private的,所以用反射可能获取不了Button和MenuStrip
      

  2.   

    在asp.net里面写权限的话重写页面或者写一个控件就可以了
      不知道 在winform里面是不是一样,希望可以帮到你
      

  3.   

    可以获得的,Assembly assembly = Assembly.LoadFile("你的程序的完整路径");
    Type [] types = assembly.GetTypes();
    foreach(Type t in types)
    {
        if(t.BaseType == typeof(System.Windows.Forms.Form))
        {
            FieldInfo[] fields = t.GetFileds(BindingFlag.NonPublic | BindingFlags.Instance);
            foreach(FieldInfo fi in fields)
            {
                if(fi.FieldType == typeof(System.Windows.Forms.Button) || fi.FieldType == typeof(System.Windows.Forms.MenuStrip))
                {//do something}
            }
    }