我有两个WinForm窗体,一个是登陆窗体,另一个是主窗体.
先显示登陆窗体,当用户输入用户名和密码,检证之后,如果成功之后就进入主窗体
当检证成功之后,怎么处理登陆窗体呢?
进入主窗体后,又怎么关闭主窗体呢?
我遇到的问题:检证成功之后,我把登陆窗体隐藏了.然后显示出来主窗体,可是这样关闭主窗体时,进程里还有这个程序,再调试的话都先把这个进程关了才行大家都是怎么做的呢?

解决方案 »

  1.   

    有好几种方法:
    方法一:
    在打开窗口B时不要关闭窗口A,而是将窗口A隐藏掉
    A.Hide();
    Form B = new Form();
    B.Show();
    并且要在窗口B的FormB_Closing事件中添加如下代码把应用程序的进程关闭:
    Application.Exit();
    方法二:
    1、将启动代码写在一个新建类(如 Common.cs)中。
    2、在启动方法中写入下代码:
    [STAThread]
    static void Main(string[] commands)
    {
        new FormA().Show();
        Application.Run();    
    }
    3、在FormA的 Closing 事件中 加入代码
    new FormB().Show();
    4、提醒: 一定要在最后一个窗口的 Closed 事件中加入
    Application.Exit() // 否则程序将不会被关闭 消息循环将一直被继续
      

  2.   

    方法三:
    定义一个全局的类MyApplictionpublic class MyAppliction
    {
      public Form1 A;
      public Form2 B;
    }然后在main里这样做MyAppliction.A = new Form1();
    Appliction.Run(MyAppliction.A);在A中想打开B的时候就MyAppliction.B = new Form2();
    MyAppliction.B.Show();
      

  3.   

    onload事件用这个
    new LoginForm().Show();
    Application.Run();如果想关闭程序
    在Closed事件用
    Application.Exit();
      

  4.   

    可以用线程Thread(System.Threading)。
    思路:开辟两个线程a、b。a是你的登陆窗体,b是你的主窗体。先启动线程a,用户登录验证通过后,启动线程b,杀死线程a。