A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董超 中级黑马   /  2012-5-26 09:57  /  3577 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    做了一个WinForm程序,但是想让它在关闭的时候自动执行一些东西,需要怎么做,比如说 关闭的时候自动保存之类的!

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

13 个回复

正序浏览
当应用程序关闭时,主窗体的关闭事件按以下顺序引发:

1、System.Windows.Forms.Form.Closing
  在关闭窗体时发生
  注意:在 .NET Framework 版本 2.0 中,Closing 事件已过时,应改用 FormClosing 事件。

2、System.Windows.Forms.Form.FormClosing
  在关闭窗体前发生,此时可以取消窗体的关闭。

3、System.Windows.Forms.Form.Closed
  关闭窗体后发生
  注意:在 .NET Framework 版本 2.0 中,Closed 事件已过时,应改用 FormClosed 事件。

4、System.Windows.Forms.Form.FormClosed
  关闭窗体后发生

5、System.Windows.Forms.Form.Deactivate
  当窗体失去焦点并不再是活动窗体时发生

注意:当调用 Application.Exit 方法以退出应用程序时,不引发 Form.Closed 和 Form.Closing 事件,但是会激发 Form.FormClosed 和 Form.FormClosing 事件。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
点击窗体。属性。事件。在FormClosing里写对应代码就行

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
复写窗体关闭事件,在复写的方法体里写你要执行的动作。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
在事件FormClosing中写入想做的事情
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //这写入你想做的事情,在关闭之前系统会做的
     }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
可以用窗体的Fromclosing时间 来操作!!就可以的哈!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
王国文 发表于 2012-6-8 10:08
哥们你很强,protecte能不能改成  public或者private

这个试试自己不就知道了啊!  呵呵 
回复 使用道具 举报
王国文 发表于 2012-6-8 10:08
哥们你很强,protecte能不能改成  public或者private

你自己可以试一下啊!
回复 使用道具 举报
朱亮辉 发表于 2012-5-26 16:19
protected override void OnClosed(EventArgs e)
   {
            MessageBox.Show("我正在关闭啊!");

哥们你很强,protecte能不能改成  public或者private
回复 使用道具 举报
朱亮辉 发表于 2012-5-26 16:19
protected override void OnClosed(EventArgs e)
   {
            MessageBox.Show("我正在关闭啊!");

哥们你很强,protecte能不能改成  public或者private
回复 使用道具 举报
可以用一个 if 语句进行判断:
if(WinForm程序关闭)
{
  //执行数据自动保存
}
else
{
   //不执行数据自动保存
}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //关闭之前要执行的代码
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            //关闭之后要执行的代码
        }
    }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
你可以通过窗体的FormClosing事件,此事件是窗体关闭前激发
还可以使用FormClosed事件,此事件是窗体关闭后激发
两种事件还是有差别的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
protected override void OnClosed(EventArgs e)
   {
            MessageBox.Show("我正在关闭啊!");
   }

重写.NET的OnClosed方法,上面是一个简单的例子!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马