【C#】WinForm

一、关闭窗体与退出程序

 1 private void metroButton2_Click(object sender, EventArgs e)
 2         {
 3             
 4             Close();    //关闭当前窗体。如果不是主窗体,无法退出程序;有托管线程(非主线程),也无法干净退出
 5 
 6             Application.Exit(); //强制所有消息终止,关闭所有窗体。有托管线程(非主线程),也无法干净退出
 7 
 8             Application.ExitThread();   //强制终止调用线程上的所有消息。同样面临其它线程无法正确退出的问题
 9 
10             Environment.Exit(0);    //这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
11         }

 

二、登录窗体(FrmLogin)和主窗体(FrmMain)

方法一:

Login按钮代码:

1 private void metroButton1_Click(object sender, EventArgs e)
2         {
3             if (true)
4             {
5                 DialogResult = DialogResult.OK;
6                 Close();
7             }
8         }

Program.cs Main方法代码:

 1 static void Main()
 2         {
 3             Application.EnableVisualStyles();
 4             Application.SetCompatibleTextRenderingDefault(false);
 5 
 6             FrmChange fr = new FrmChange();
 7             if (fr.ShowDialog()==DialogResult.OK)
 8             {
 9                 Application.Run(new Form1());
10             }
11             
12         }

方法二:

Login按钮代码:

 1 //Login
 2         private void metroButton1_Click(object sender, EventArgs e)
 3         {
 4             if (true)
 5             {
 6                 Form1 fr = new Form1();
 7                 fr.Show();
 8                 Dispose(false);
 9             }
10         }

 

主窗体关闭:

FormClosing事件:在窗体关闭前发生,窗体的关闭动作可取消

FormClosed事件:在窗体关闭后发生,窗体的关闭动作不可取消

 1 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
 2         {
 3             if (MessageBox.Show("确认退出程序吗", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
 4             {
 5                 e.Cancel = true;
 6             }
 7             else
 8             {
 9                 //Application.Exit();
10             }
11         }

备注:如果不将Application.Exit()方法注释掉,则会显示两个确认退出的对话框,但第二对话框的选择对是否退出没有影响

posted @ 2020-05-24 11:25  旋转的地球  阅读(627)  评论(0编辑  收藏  举报