原创  关于VS2005里面的FormClosing事件内添加对话框后重复执行的问题 收藏

不知是版本的问题,还是其它的原因。在VS2005里面使用VS2003下的Form.Closing事件,因为VS2005里面不直接提供原Closing事件。所以找了一下,已经改为FormClosing了。
现在问题出来了。在VS2003里面的:
        private void MainForm_Closing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("你确定要退出本系统吗?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
            {
                LogoutSystem.Logout();
                Application.Exit();
            }
            else { WriteLogger.WriteLog("退出系统", "退出系统被用户取消", "取消"); e.Cancel = true; }
        }
是正常的。但2005里面它会执行两次弹出对话框的操作。用F11键进行跟踪后,发现原来是Application.Exit();事件在作怪。在执行到它的时候,它会再次执行MainForm_Closing整个事件。所以弹出两次对话框。
因为时间的关系。没有去研究Application.Exit事件里面的情况。所以就找了一个简单的方法。为此,对代码进行修改,把Application.Exit();改为Application.ExitThread();就可以了。

发表于 @ 2006年04月06日 18:40:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:在Visual C# .NET中建立自己的地址栏 | 新一篇:用GDI+划直线

  • 发表评论
  • 评论内容:
  •  
Copyright © cocosoft
Powered by CSDN Blog