C# 窗体关闭事件为何没有响应

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:03:02
我用VS2005,做了主窗体和登录窗体(frmLogin ),想法是在登录窗体关闭时实现对话框确认,可是套用了多种代码均没有反映,是不是我得窗体属性得关系,请各位高手帮忙看下,小弟在此谢过了~~!!
代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace CXG_Lights_Control
{
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
}
public object pfrm;
public int i = 0;
private void frmLogin_Load(object sender, EventArgs e)
{
txtName.Focus();
}

//在这个事件得地方我已经试过了Closing、FrmClosing、onFrmClosing、OnClosing这几种写法,都失败了……
private void frmLogin_OnClosing(object sender, FormClosingEventArgs e)
{
MessageBox.Show("1");
if (MessageBox.Show("是否确认要关闭此软

在你窗体初始化函数中加上
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmLogin_OnClosing);

测试通过:
你写反了

if (MessageBox.Show("是否确认要关闭此软件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
希望能够给予帮助。

用OnClosing是没错,不过你可能没理解e.Cancel的意思,e.Cancel表示为是否取消该事件的属性,按照你的逻辑应该按照楼上的方法改。

你是不是做了一个按钮,按钮的单击事件为:
private void btnCancel_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtPwd.Text = "";
txtName.Focus();
this.Close();
}

正常点击窗体右上角的叉是会正常调用事件private void frmLogin_OnClosing(object sender, FormClosingEventArgs e)的,但如果是点击自制的关闭按钮,就必须把以上代码改成:

private void btnCancel_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtPwd.Text = "";
txtName.Focus();
frmLogin_OnClosing(this,