在线等!关于关闭窗口前响应别的按钮的leave 的问题!

HELLOWORDC 2009-12-13 11:14:44
有一个窗体,其中有一个leave 事件是提示该控件不能为空,提示后,焦点就回到了该控件。
这样在如下情况下会有问题:

如果在实际应用中,该控件为空时,用户去点“取消”按钮来关闭窗口,但是系统的反应时:弹出提示“不能为空”的提示,焦点就回到了该控件,窗口却关闭不了。

如果该控件不为空的时候,是不存在如上不能关闭窗口的问题的。这是符合程序意图的,因为在点击取消按钮之前系统是先响应改控件的leave 事件的。但这显然又不符合使用常识,既然我已经点击取消按钮,就不应该再去管哪个控件是否为空而直接关闭窗口。

直接点窗体最上端关闭按钮×就不存在如上问题。我现在想点击“取消”按钮得到直接点窗体最上端关闭按钮×的效果直接强行关闭窗口,应该怎么办?





【原创家庭记账簿1.2,简单实用,欢迎工薪阶层、家庭主妇下载使用
http://download.csdn.net/source/1894835】

...全文
211 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
ProjectDD 2009-12-13
  • 打赏
  • 举报
回复
private void cBank_Leave(object sender, EventArgs e)
{

if (this.cBank.Text == "" || this.cBank.Text == null)
{
var v=MessageBox.Show("银行账户不能为空,请重新输入!", "提示", MessageBoxButtons. OK, MessageBoxIcon.Warning);
if(v==~.OK){}
else{}
this.cBank.Focus();

this.BankFirstMoneynUD.Value = 0;
// this.FirstFinancing_Load(sender, e);

}
else
{......}
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
必须要判断,“取消”是不用判断,但“确定”需要判断啊。如果点“取消”,就是无条件关闭(不论那个控件内容空否),是这个意思。
  • 打赏
  • 举报
回复
ButtonCancel(object sender EventArgs e)
{
form.Close();
}

没想到你会把这段代码复制进你的工程

form就是弹出来的窗体,就是你要取消的那个对话框

不需要判断,因你的要求是只要点了取消,就不条件关闭(不论那个控件内容空否),是这个意思吧?
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
private void Cancel_Click(object sender, EventArgs e)
{
//this.DialogResult = DialogResult.Cancel;
this.Closed();
}


private void cBank_Leave(object sender, EventArgs e)
{

if (this.cBank.Text == "" || this.cBank.Text == null)
{
MessageBox.Show("银行账户不能为空,请重新输入!", "提示", MessageBoxButtons.
OK, MessageBoxIcon.Warning);
this.cBank.Focus();

this.BankFirstMoneynUD.Value = 0;
// this.FirstFinancing_Load(sender, e);

}
else
{......}
wuyq11 2009-12-13
  • 打赏
  • 举报
回复
不能为空提示是在哪里编写
在代码里判断是否为空
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
我要关的是对话框
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 projectdd 的回复:]
1,this.Close();
2,Application.Exit();
[/Quote]

不行。

还是要其他控件的leave事件在前,并且Application.Exit();是关闭应用程序,而不是关闭窗口。
ProjectDD 2009-12-13
  • 打赏
  • 举报
回复
1,this.Close();
2,Application.Exit();
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
贴代码朋友们看起来更麻烦。我就是想要一个Cancel_Click(object sender, EventArgs e)能够得到直接点窗体最上端关闭按钮×的效果直接强行关闭窗口,而不用去考虑窗体其他控件的leave 等事件。




【原创家庭记账簿1.2,简单实用,欢迎工薪阶层、家庭主妇下载使用
http://download.csdn.net/source/1894835】
ProjectDD 2009-12-13
  • 打赏
  • 举报
回复
贴代码让CSDN的友 们帮你搞定吧
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 projectdd 的回复:]
加一个if撒

if(XXX!=null)
[/Quote]

在哪里加?
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangglemu 的回复:]
ButtonCancel(object sender EventArgs e)
{
form.Close();
}
[/Quote]

form是指什么?

错误 1 当前上下文中不存在名称“form” E:\c#\gold\gold3\FirstFinancing.cs 23 13 gold
ProjectDD 2009-12-13
  • 打赏
  • 举报
回复
加一个if撒

if(XXX!=null)
  • 打赏
  • 举报
回复
ButtonCancel(object sender EventArgs e)
{
form.Close();
}
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
给了啊
myjce 2009-12-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091204/14/d77ce31d-7e90-466f-9fc7-88ece58a2a13.html?93468
给出你的校验代码,不然无法判断
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
明白了。非常感谢!CSDN需要多一些象你这样有热情、有耐心、有水平的同学!


我还有一个50分的问题没有满意答案,你想不想得啊?http://topic.csdn.net/u/20091204/14/d77ce31d-7e90-466f-9fc7-88ece58a2a13.html?93468

关于NumericUpDown控件的事件的问题,在线等!
myjce 2009-12-13
  • 打赏
  • 举报
回复
Click与焦点不是一个概念,所以没有焦点也会触发单击事件,就像Label,它没有焦点,但也会触发单击事件
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 tianliang1 的回复:]
引用 25 楼 hellowordc 的回复:
哈哈,可以了,就是要这个效果,给分给分。你真是一个有热情、有耐心、有水平的高手啊!我对你的景仰有如滔滔江水......

能跟我说说,你加的那个是什么意思啊?

lz真风趣。。。。
[/Quote]

该同学确实对我等学友很有爱心,也很有水平,呵~
HELLOWORDC 2009-12-13
  • 打赏
  • 举报
回复
还是这个问题,我再问一句啊,Cancel不获得焦点,那么它的Cancel_Click(object sender, EventArgs e)事件又是如何激发的呢?
加载更多回复(17)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧