zoukankan      html  css  js  c++  java
  • 【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()方法注释掉,则会显示两个确认退出的对话框,但第二对话框的选择对是否退出没有影响

  • 相关阅读:
    BZOJ4416 [Shoi2013]阶乘字符串 【序列自动机 + 状压dp】
    BZOJ2159 Crash 的文明世界 【第二类斯特林数 + 树形dp】
    快速求原根
    BZOJ2530 [Poi2011]Party 【贪心】
    BZOJ2213 [Poi2011]Difference 【乱搞】
    BZOJ2276 [Poi2011]Temperature 【单调队列】
    多项式除法
    loj2538 「PKUWC2018」Slay the Spire 【dp】
    loj2537 「PKUWC2018」Minimax 【概率 + 线段树合并】
    Java多线程之线程的暂停
  • 原文地址:https://www.cnblogs.com/zps-blog/p/12950321.html
Copyright © 2011-2022 走看看