.Net中TextBox对于焦点的控制(二)

本文介绍了在.Net应用程序中,TextBox控件的Validating事件在特定条件下意外触发的问题,并提供了解决方案,包括如何避免在不期望的情况下触发此事件。

这篇是对我昨天写的那篇 .Net中TextBox对于焦点的控制的补足部分,请放在一起阅读。

不知道是什么原因,这个Validating事件,有些情况下会在你不想让它发生的时候,自动发生。主要是下面几种情况:

调用Me.Close
点击Form有上角的叉来关闭窗口
CausesValidation = False的按钮上面按回车键(用方向键移动焦点)
按空格键的时候Validating事件不会发生。)

也就是说,如果你想用Close关闭窗口,即使你的按钮和Form的CauseValidation属性设置为False,窗口还是无法被正常关闭。

在网上查到了一种解决方法,具体代码如下

Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating

    If ActiveControl.CausesValidation = False Then
       
Exit Sub
   
End If   

    If Not IsDate(TextBox1.Text) Then
       
MsgBox("请输入有效日期。", MsgBoxStyle.Information)
        e.Cancel =
True
   
End If

End Sub

但是上面这段代码并不能解决直接点叉关闭窗口的问题,这个时候需要按照下面这种写法解决。

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Form1.Closing

     e.Cancel = False

End Sub

这种方法可能不是很好,但至少能解决我的问题。希望对大家有所帮助。

转载于:https://www.cnblogs.com/Ronin/archive/2006/06/09/421793.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值