不行的
对于单线程的程序
主程序只有一个线程
也就说只有一个主窗口,即
Application.Run(new Form1());
这个Form1就是主窗口
它的关闭也就是主程序的关闭
所以你的想法是不行的,
也就是说不能关闭主窗口
但是你可以把新生成的窗口作为登录窗口
或者把Application.Run(new Form1())
改为Application.Run(new MainForm())
然后在MainFrom中调用登录窗口
这样就可以了主窗口是所有窗口最新执行的
也就是Application.Run(new Form1())
中的Form1
然后你可以自己调用不同的窗口

解决方案 »

  1.   

    我是在主窗体的Load事件中加入
    Logon dlg = new Logon(); // 登录 窗体
    if(dlg.ShowDialog() != DialogResult.OK)
         this.Close();
      

  2.   

    已经解决,办法如下:
    两个Form分别为:MainForm.cs和LoginForm.cs
    LoginForm.cs包涵Main函数即应用程序入口点,并且把Application.Run(new LoginForm())
    修改为Application.Run(new MainForm())(大侠re一下,这个是不是就代表了改应用程序主线程为MainForm),同时还要把LoginForm中的确定按钮的DialogResult属性设置为OK;接着在MainForm的Load事件中判断:private void MainForm_Load(object sender, System.EventArgs e)
    {
    LoginForm login=new LoginForm();
    if (login.DialogResult!=DialogResult.OK)
    {
    login.ShowDialog();
    }
    }
    这样就实现了我的目的,功能可以自己扩展.
      

  3.   

    补上:
    在login.ShowDialog();行下面加:
    this.close目的,如果直接单击右上角的x关闭窗口的话,application还是接着运行的
    这个要小心,在其他按钮事件中大家小心了