在WinForm 程序中,我们可以在窗体和控件级别对用户输入进行验证
1. Form Level Validation (窗体级别的验证)
在窗体级对用户进行输入验证,我们首先必须对控件的键盘输入消息进行拦截,这可以通过将Form 的KeyPreview 属性设置为True来达到,当KeyPreview 设置为True 时,控件的键盘输入消息将首先由窗体处理。
编写过程来响应窗体的KeyPress 等键盘消息,在过程中我们加入输入的验证代码,如果用户的输入验证失败,我们可以通过将KeyPreviewEventArgs的Handled 属性设为True 来阻止此消息发送给控件。
2. Control Level Validation (控件级别的验证)
我们可以使用控件的Validating 消息来验证用户的输入。
当控件即将失去焦点的时候将触发Validating 消息,如果验证失败,则控件将拒绝丢失焦点。在Validating 的消息处理函数中,我们可以将CancelEventArgs 的Cancel 属性设置为True 来报告用户输入验证的失败。
Validating 消息触发的条件: 1. 即将得到焦点的控件的CauseValidation 属性设置为True 2.被验证的控件的CauseValidation设置为 True。
当验证通过之后,控件将触发Validated 消息。