]
你这个是不是像QQ的那种切换用户呀,退出当前用户然后显示登录窗,这样即可   private void mnuReLogin_Click(object sender, EventArgs e)
        {
            if (Utility.ShowQuestionMessage("是否切换用户?") == System.Windows.Forms.DialogResult.Yes)
            {
                StartExe(Application.ExecutablePath);
                Application.ExitThread();
            }
        }        private static void StartExe(string appName)
        {
            string path = appName;
            Process ps = new Process();
            ps.StartInfo.FileName = path;
            ps.StartInfo.Arguments = "T";
            ps.StartInfo.CreateNoWindow = true;
            ps.StartInfo.WorkingDirectory = Path.GetDirectoryName(path);
            ps.Start();
        }

解决方案 »

  1.   

    那就不要退出程序,只关闭窗体不就好了你是怎么让程序启动显示登陆页面,登陆成功后关闭登陆页面,显示窗体的那么不就是把这个过程反过来如果你是用Application.Run(主窗体),登陆窗体关闭,那么你也直接关闭主窗体,从新用一个进程打开登陆窗体
    如果你是将登陆窗体隐藏了,然后显示主窗体,那么你关闭主窗体,让登陆窗体重新显示,不就得了
      

  2.   

    或者你不要用Applicatcion.Exit()
    而用Applicatcion.Restart();
      

  3.   

    我估计撸主描述的是一个winform的程序实现注销的功能:
    关闭主窗体,显示登录界面。
      

  4.   

    有一种牛b的方法 IsLogin:
                    IsLogin = false;                if (new FrmLogin().ShowDialog() == DialogResult.OK)
                    {
                          //登录成功,运行主程序
                        Application.Run(new FrmMDIMain());
                    }
                    else
                    {
                        Application.Exit();
                    }
                    //当关闭主程序的时候会执行这个代码,在关闭主程序的时候需要给IsLogin 设置成true,那么就goto 到IsLogin,然后又重新回到登录窗口.
                    if (IsLogin)
                    {
                        goto IsLogin;
                    }
      

  5.   

    "IsLogin:" 是goto点,IsLogin 是个全局变量,名字别混淆了.
      

  6.   

      private void 注销ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form2 fm2 = new Form2();
                Program.context.MainForm = fm2;
                fm2.Show();
                
                this.Close();
            }program.cs       internal static ApplicationContext context = new ApplicationContext(new Form1());
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                //Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(context);
            }
      

  7.   

    好像报错了,Utility显示不存在,是不是要添加引用?怎么添加呢?求大神指教
      

  8.   


    这个对我的程序管用,虽然不知道StartExe方法里面的代码什么意思,谢谢您,如果不介意,您能说说这是什么意思吗
      

  9.   


    这个对我的程序管用,虽然不知道StartExe方法里面的代码什么意思,谢谢您,如果不介意,您能说说这是什么意思吗
    Utility.ShowQuestionMessage("是否切换用户?") 这个只是一个MessageBox.Show的封装,你可以去掉或改用MessageBox
    StartExe 这个就是转一个路径启动exe ,,,
      StartExe(Application.ExecutablePath);
    Application.ExitThread();
    你可以理解先启动一个exe  然后关掉当前进程
      

  10.   


    能不能改成while啊,看到goto就想吐槽。能不用goto还是不要goto了。
      

  11.   

    感觉上面说的都很奇怪啊。   你的登陆窗体(Login)肯定是主窗体啊,你只要登陆的时候把Login.Hide()了,系统主窗体Show()出来,不需要的时候再Close()掉,同时把Login.Show()出来就可以实现你说的效果。
      

  12.   

     //关闭窗体的时候 要是你的登陆界面是你程序的启动界面
    Application.Restart();
      

  13.   

    我就是用的
    Applicatcion.Restart();