none
怎样遍历项目中的Form并返回对应的Form? RRS feed

  • 问题

  • 项目中包含若干个Form,需要根据Form 的Name,遍历所有的Form后并返回匹配的Form,请问该怎样实现呢?

    考虑过用for each xx in xxx.collection,但是不知道哪个Collection包含项目中的所有Form,试用过项目的名称,也没有成功。

    谢谢各位的赐教!

    2011年12月26日 8:35

答案

  • 如果要反射所有窗体类型,可以遍历这个数组

    Dim form_types as Type() = System.Reflection.Assembly.GetExecutingAssembly().GetTypes().Where(Function(t) t.IsSubclassOf(GetType(Form))).ToArray()

    不过这是反射所有类型的,是你要的么?创建的话,用
    Activator.CreateInstance(类型)
    可以创建实例。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年12月27日 5:42
  • 项目中包含若干个Form,需要根据Form 的Name,遍历所有的Form后并返回匹配的Form,请问该怎样实现呢?

    考虑过用for each xx in xxx.collection,但是不知道哪个Collection包含项目中的所有Form,试用过项目的名称,也没有成功。

    谢谢各位的赐教!

    除了George的方法外,你也可以试试这个属性: http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.openforms(v=VS.100).aspx 

    先看看效果,然后回来说行不行,如果不行的话,那就只能George的万能的方法了...

     


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2011年12月27日 14:10
    版主

全部回复

  • 项目中包含若干个Form,需要根据Form 的Name,遍历所有的Form后并返回匹配的Form,请问该怎样实现呢?

    考虑过用for each xx in xxx.collection,但是不知道哪个Collection包含项目中的所有Form,试用过项目的名称,也没有成功。

    谢谢各位的赐教!


    你可以考虑使用System.IO类中的Directory.GetAllFiles,获取全部后缀是cs并且包含“Form”字符串的窗体即可。比如:

    var result = Directory.GetFiles("你的绝对或者相对路径""*.cs"SearchOption.AllDirectories);
                foreach (var item in result)
                {
                    //处理result(包含完整路径和文件名.扩展名)
                }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年12月27日 1:57
    版主
  • 如果要反射所有窗体类型,可以遍历这个数组

    Dim form_types as Type() = System.Reflection.Assembly.GetExecutingAssembly().GetTypes().Where(Function(t) t.IsSubclassOf(GetType(Form))).ToArray()

    不过这是反射所有类型的,是你要的么?创建的话,用
    Activator.CreateInstance(类型)
    可以创建实例。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年12月27日 5:42
  • 项目中包含若干个Form,需要根据Form 的Name,遍历所有的Form后并返回匹配的Form,请问该怎样实现呢?

    考虑过用for each xx in xxx.collection,但是不知道哪个Collection包含项目中的所有Form,试用过项目的名称,也没有成功。

    谢谢各位的赐教!

    除了George的方法外,你也可以试试这个属性: http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.openforms(v=VS.100).aspx 

    先看看效果,然后回来说行不行,如果不行的话,那就只能George的万能的方法了...

     


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2011年12月27日 14:10
    版主