如题,我有很多个窗口,界面都是差不多的,就是怎么控制一下每次启动要启动哪个窗口?跟WebForm不一样,WebForm里只要设置为起始页就行

解决方案 »

  1.   

    在program.cs文件里有这么一行
      Application.Run(new Form1());
    把Form1改成你要启动的form名就可以了
      

  2.   

    可执行程序都需要一个执行入口点的,那就是main函数
      

  3.   

     Application.Run(new 起始窗口()); 
      

  4.   

    如果只是简单地要变更起始窗口的话,使用上面几位的方法即可.如果说,楼主需要的是程序在开发完成后,交给客户使用,在客户使用的过程中,需要在下一次启动的时候,启动指定的窗口的话.这需要使用到第三方文件(配置文件 CONFIG INI XML文件等)来保存需要启动窗口的类名,在下一次运行的时候调用文件中保存的信息然后动态加载窗口.在这里面需要添加Assemly从字符串中读取类名来完成类的实例化.
      

  5.   

    Application.Run(new 窗体名); 
      

  6.   

    没错,“cocosoft”我就是要这种效果,请问怎么配置CONFIG INI XML呢?
      

  7.   

    Application.Run(new 窗体名());  
      

  8.   

    cocosoft 的意思是说通过CONFIG INI XML等文件来配置你想要动态加载的Assembly,CONFIG INI XML等文件中你可以配置需要加载的Assembly得路径、命名空间、类名、Assembly名称等一些信息,在程序运行时读取配置文件来动态加载Assembly。动态加载Assembly的例子如下:
    Assembly   a   =   Assembly.LoadFrom(args[0]);   
                      Type[]   mytypes   =   a.GetTypes();   
                      BindingFlags   flags   =   (BindingFlags.NonPublic   |   BindingFlags.Public   |     
                              BindingFlags.Static   |   BindingFlags.Instance   |   BindingFlags.DeclaredOnly);   
        
                      foreach(Type   t   in   mytypes)   
                      {   
                              MethodInfo[]   mi   =   t.GetMethods(flags);   
                              Object   obj   =   Activator.CreateInstance(t);   
        
                              foreach(MethodInfo   m   in   mi)   
                              {   
                                      m.Invoke(obj,   null);   
                              }   
                      }   
      

  9.   

    如果你的Form是从其他dll文件中传递过来的,那么,你需要使用Assembly.LoadFrom()事件来传递你的文件名,即.dll文件名(包含完整路径).如果是本身exe文件内部的窗口,那么你只需要使用Assembly里面的GetType事件来取出类名.例:Type TheType = null;
    Assembly ass = Assembly.LoadFrom(Application.StartPath + "\\" + DllFileName);
    TheType = ass.GetType(FormClassName);
    //这里面的DllFileName是你的dll文件名称,FormClassName是你的窗口类名称
    //...
    Form f=(Form)Activator.CreateInstance(TheType);//创建窗口的实例
    对CONFIG或INI或XML文件的操作,你可以参考C#对之些文件的操作的相关实例.网络上一抓一大把.
      

  10.   


    Type TheType = null; 
    Assembly ass = Assembly.LoadFrom(Application.StartPath + "\\" + DllFileName); 
    TheType = ass.GetType(FormClassName); 
    //这里面的DllFileName是你的dll文件名称,FormClassName是你的窗口类名称 
    //... 
    Form f=(Form)Activator.CreateInstance(TheType);//创建窗口的实例
    测试一下
      

  11.   

    在program.cs文件里有这么一行 
      Application.Run(new Form1()); 
    把Form1改成你要启动的form名就可以了----------------------------------
    如果是多个工程,设置为"设为启动项目",
    然后在program.cs文件里 
      Application.Run(new Form1()); 
    把Form1改成你要启动的form名就可以了
      

  12.   

    是本身exe文件内部的窗口,但Assembly.LoadFrom里面的参数我写的是命名空间的名字还不行,求大侠帮助!
      

  13.   

    main函数里面的Application.Run(new Form());
      

  14.   

    cocosoft 救命啊!!!!!!!!!
      

  15.   

    本身是exe文件里面的窗口的话,不需要使用到Assembly.直接使用Type.GetType(类名)即可.如:
    Type TheType = Type.GetType(类名);Form f=(Form)Activator.CreateInstance(TheType);即可进行实例化