解决使用工具栏组件时控件焦点事件的问题

winform程序,窗体上使用了toolStrip控件,也就是工具栏按钮控件。窗体上还有一些文本框,在文本框的失去焦点事件——也就是Leave事件中,做一些填写内容的验证,若验证通过,则将数据保存在某个对象A中。工具栏上有一些功能按钮,比如保存,将对象A中保存的内容保存下来。

 

但是发现,点击在toolStrip上添加的保存按钮,无法触发文本框的Leave事件,导致若填写内容后直接点击保存,将不会做内容的验证及将内容保存在对象A中,进一步导致文本框中的内容无法保存下来。

 

试验了一下,发现点击toolStrip中的按钮,的确不会使得文本框失去焦点。既然如此,只好想办法将焦点改变,从而触发文本框的Leave事件。

 

几经查阅和实验,发现倒也不难,只要在点击“保存”按钮时,用toolStrip1.Focus()将焦点设置在工具栏上即可。此时,会触发文本框的Leave事件,进而做数据的验证等,但若是数据验证不通过,则不应该继续执行保存功能。因此,可以在窗体中增加一个成员变量,用来记录数据验证的结果。在点击“保存”按钮时,用toolStrip1.Focus()改变焦点后,再根据增加的成员变量的值,来判断是否要继续进行保存操作。

 

工具栏是这样,估计菜单栏也是这样,不过没有试过,应该是同样的道理吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值