当前位置:文档之家› C#中WinForm程序退出方法技巧总结

C#中WinForm程序退出方法技巧总结

{ if (txtName.Text == "123456") { FrmMain fm = new FrmMain(); fm.Show(); this.Dispose(false); }
}
//主窗体的 FormClosing 事件或 FormClosed 事件代码 private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{ Application.Exit();
}
//主窗体的 FormClosed 事件代码 private void FrmMain_FormClosed(object sender, FormClosedEventArgs e)
{ Application.Exit();
}
说明:FormClosing 事件或 FormClosed 事件二选一,这两个的区别在于 FormClosed 在关闭后发生,窗体的关闭动作不可取消; FormClosing 在关闭前发生,可取消,只要在里面使用 e.Cancel=true; 就可以让窗口不能关闭。
{ if (MessageBox.Show(" 真 的 要 退 出 程 序 吗 ? ", " 退 出 程 序 ",
MessageBoxButtons.OKCancel) == DialogResult.OK) { Application.Exit(); } else { e.Cancel = true; }
{
Dispose(); Application.Exit(); }
小贴士:以下代码会导致显示确定退出的两次对话框,第一次单击“确定”第二次单击任何一个都会退出。 private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
进阶技巧:在退出程序前弹出确认退出程序的对话框 //主窗体的 FormClosing 事件代码 private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{ if (MessageBox.Show(" 真 的 要 退 出 程 序 吗 ?Байду номын сангаас", " 退 出 程 序 ",
C#中 WinForm 程序退出方法技巧总结
一、关闭窗体 在 c# 中 退 出 WinForm 程 序 包 括 有 很 多 方 法 , 如 :this.Close();
Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他们各自 的方法不一样,下面我们就来详细介绍一下。 1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非 主线程),也无法干净地退出; 2.Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无 法干净地退出; 3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的 问题; 4.System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结 束的很干净。 二、登录窗体与主窗体的关闭
MessageBoxButtons.OKCancel) == DialogResult.Cancel) { e.Cancel = true; }
} ////主窗体的 FormClosed 事件代码 private void FrmMain_FormClosed(object sender, FormClosedEventArgs e)
有许多人在用做 c# 做登录窗体时会遇到这样的问题,登录成功后当前登录 Form 关闭,打开 Main 窗 体,但 Main 窗体点关闭按钮后程序仍在进程仍旧在运行。
事实上,关闭 Main 窗体,只是关闭了 Main 窗体的线程,并没有关闭程序的主线程,即程序的主线程 为登录 From。 方法一:(FrmLogin 为登录窗体,FrmMain 为主窗体) //登录窗体中“登录”按钮的单击事件 private void button1_Click(object sender, EventArgs e)
方法二: //program.cs 程序入问的 Main()方法代码,其中 FrmLogin 为登录窗体,FrmMain 为主窗体
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false);
FrmLogin fl = new FrmLogin(); if (fl.ShowDialog() == DialogResult.OK) {
Application.Run(new FrmMain()); } }
//登录窗体中的“登录”按钮代码 private void button1_Click(object sender, EventArgs e)
}
分 析 : 第 一 次 单 击 了 退 出 对 话 框 的 “ 确 定 ” 按 钮 后 , Application.Exit(); 会 导 致 触 发 第 二 次 FrmMain_FormClosing()事件,所以就会显示两个确认退出的对话框,但第二对话框的选择对是否退出没 有影响。可以改为判断如果单击了不是确认按钮则 e.Cancel = true; ,确定按钮什么都不写或不做判 断,如果要加上 Application.Exit(); 可以将其添加到窗体的 FormClosed 事件中。
{ if (txtName.Text == "123456") { this.DialogResult = DialogResult.OK; this.Close(); }
}
相关主题