如何在有焦点事件的情况下关闭窗口?

gamezjs 2012-01-04 09:29:50
设置了一个TxtBox(名字叫txtName)的焦点事件,另外还有个一关闭窗口的按钮btnExit,运行程序后,光标自动定位在txtName,这时如果点击btnExit按钮,不触发btnExit的程序,而是触发txtName的事件而无法触发btnExit的事件了。求指点!!!部分代码如下:

private void btnExit_Click(object sender, EventArgs e)
{
txtName.CausesValidation = false;
this.Close();
}

private void txtName_Enter(object sender, EventArgs e)
{
txtHelp.Text = "请输入您的姓名!";
}
private void txtName_Validating(object sender, CancelEventArgs e)
{
if (txtName.Text.Trim() == string.Empty)
{
MessageBox.Show("用户名为空,请重新输入");
txtName.Focus();
}
...全文
95 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyx266 2012-01-12
  • 打赏
  • 举报
回复
直接点窗体的关闭 就可以退出了
gamezjs 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cnwin 的回复:]
应该可以的,不过那样得加一个标示,比如当窗口关闭时会引发验证,然而在此时如果你将一个blnValidation置为false,然后在txtName_Validating里检验这个值,如果为False则不进行检验。
[/Quote]

求代码,3Q~~
cnwin 2012-01-04
  • 打赏
  • 举报
回复
应该可以的,不过那样得加一个标示,比如当窗口关闭时会引发验证,然而在此时如果你将一个blnValidation置为false,然后在txtName_Validating里检验这个值,如果为False则不进行检验。
gamezjs 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 laiyongxin 的回复:]
当你为一个控件定义了Validating事件,那么这个控件在失去焦点后就会执行事件。
因为你程序一开始为textBox获取了焦点,所以在你点按钮的时候,其实是先触发了textBox的Validating事件。
[/Quote]
有没有什么方法可以解决,还是像我想法中的这种情况无法实现?
lyx266 2012-01-04
  • 打赏
  • 举报
回复
当你为一个控件定义了Validating事件,那么这个控件在失去焦点后就会执行事件。
因为你程序一开始为textBox获取了焦点,所以在你点按钮的时候,其实是先触发了textBox的Validating事件。

gamezjs 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ccy_qty 的回复:]
你的本意是不是在窗口关闭时要提示用户该录入的数据没有录入,如果是,那么你的代码没有错。
如果不是,那么就不要在textbox的验证事件中写代码。建议将验证事件中的代码写到窗口的FormClosing事件中,为空时提示用户是不是确定要关闭窗口。
[/Quote]
把代码放到确定按钮的话,是可以实现,可我想问的是,不能直接提示吗?
gamezjs 2012-01-04
  • 打赏
  • 举报
回复
我的想法是如果想保存数据,那么有些字段必须写,如果不写,就跳不到下个TxtBox,就会提示,请输入姓名等这类的信息,但是如果不想保存,就直接退出,点btnExit按钮,就直接关闭窗口.
dev_dev 2012-01-04
  • 打赏
  • 举报
回复
把txtName_Validating中的内容移到“确认”按钮
蛇尾巴草 2012-01-04
  • 打赏
  • 举报
回复
你的本意是不是在窗口关闭时要提示用户该录入的数据没有录入,如果是,那么你的代码没有错。
如果不是,那么就不要在textbox的验证事件中写代码。建议将验证事件中的代码写到窗口的FormClosing事件中,为空时提示用户是不是确定要关闭窗口。
@信心 2012-01-04
  • 打赏
  • 举报
回复
form_load()
{txtName.focus();}
只写代码不行,要在设计界面把控件与事件关联在一起!
  • 打赏
  • 举报
回复
我 也感觉,你搞这些控件的这些事件是搞神马的~~
什么需求
淘淘大师 2012-01-04
  • 打赏
  • 举报
回复
窗体中有一个AcceptButton属性 你设置为btnExit
  • 打赏
  • 举报
回复
txtName.CausesValidation = false;
断点打到这行,点btn没反应??走不到?

bdmh 2012-01-04
  • 打赏
  • 举报
回复
txtName失去焦点,肯定会触发相关事件,你这个控制确实有问题,需要理一理

110,566

社区成员

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

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

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