C# 窗体关闭事件为何没有响应
我用VS2005,做了主窗体和登录窗体(frmLogin),想法是在登录窗体关闭时实现对话框确认,可是套用了多种代码均没有反映,是不是我得窗体属性得关系,请各位高手帮忙看...
我用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("是否确认要关闭此软件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
e.Cancel = true;
}
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (txtName.Text == "1" && txtPwd.Text == "1")
{
((frmMain)pfrm).ok = 1;
((frmMain)pfrm).Enabled = true;
this.Close();
}
else if (txtName.Text == "" || txtPwd.Text == "")
{
MessageBox.Show("用户名或密码不能为空!");
txtName.Focus();
}
else
{
if (i > 5)
{
//MessageBox.Show("输入出错次数已经超过5次,程序即将关闭!");
//((frmMain)pfrm).Close();
//this.Close();
}
MessageBox.Show("用户名或者密码错误!");
i++;
txtName.Text = "";
txtPwd.Text = "";
txtName.Focus();
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtPwd.Text = "";
txtName.Focus();
this.Close();
}
}
}
怎么注册事件??窗体控件原来得事件里没有关闭事件吗,记得以前直接调用就完事了啊……懵了
我也知道IF判断写反了,可是我这运行的时候什么消息框也不弹出来,我还特意在前面写了一句 Message“1”啊,我这边时什么反映都没有直接就关了,求各位帮忙分析一下原因…… 展开
代码如下:
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("是否确认要关闭此软件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
e.Cancel = true;
}
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (txtName.Text == "1" && txtPwd.Text == "1")
{
((frmMain)pfrm).ok = 1;
((frmMain)pfrm).Enabled = true;
this.Close();
}
else if (txtName.Text == "" || txtPwd.Text == "")
{
MessageBox.Show("用户名或密码不能为空!");
txtName.Focus();
}
else
{
if (i > 5)
{
//MessageBox.Show("输入出错次数已经超过5次,程序即将关闭!");
//((frmMain)pfrm).Close();
//this.Close();
}
MessageBox.Show("用户名或者密码错误!");
i++;
txtName.Text = "";
txtPwd.Text = "";
txtName.Focus();
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtPwd.Text = "";
txtName.Focus();
this.Close();
}
}
}
怎么注册事件??窗体控件原来得事件里没有关闭事件吗,记得以前直接调用就完事了啊……懵了
我也知道IF判断写反了,可是我这运行的时候什么消息框也不弹出来,我还特意在前面写了一句 Message“1”啊,我这边时什么反映都没有直接就关了,求各位帮忙分析一下原因…… 展开
4个回答
展开全部
测试通过:
你写反了
if (MessageBox.Show("是否确认要关闭此软件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
希望能够给予帮助。
你写反了
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,null);//调用frmLogin_OnClosing
}
要调用窗体OnClosing事件才行,因为this.Close方法并不包含提示关闭,除非你重写它。
再试试看
你是不是做了一个按钮,按钮的单击事件为:
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,null);//调用frmLogin_OnClosing
}
要调用窗体OnClosing事件才行,因为this.Close方法并不包含提示关闭,除非你重写它。
再试试看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注册了事件没??
要么就在设计页面的方法里面输入关闭时调用的函数。。。
要么就在设计页面的方法里面输入关闭时调用的函数。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询