.net VB表单验证问题

.net VB表单验证问题,.net,vb.net,winforms,validation,focus,.net,Vb.net,Winforms,Validation,Focus,我在VB中进行表单验证,我使用txtName\u LostFocus函数验证文本字段数据,在输入错误时使用了txtName.Focus()。它对我很有效。但问题是,用户并没有输入有效的文本,我的退出按钮也不起作用。是否有解决此问题的方法。您遇到的问题是由于未仔细阅读文档造成的。的文档非常清楚,您不应尝试在处理程序方法中为此事件设置焦点(例如,通过调用): 小心 请勿尝试在Enter、GOTCHOCUS、LEVE、LostFocus、Validating或Validated事件处理程序中设置焦点。

我在VB中进行表单验证,我使用
txtName\u LostFocus
函数验证文本字段数据,在输入错误时使用了
txtName.Focus()
。它对我很有效。但问题是,用户并没有输入有效的文本,我的退出按钮也不起作用。是否有解决此问题的方法。

您遇到的问题是由于未仔细阅读文档造成的。的文档非常清楚,您不应尝试在处理程序方法中为此事件设置焦点(例如,通过调用):

小心

请勿尝试在Enter、GOTCHOCUS、LEVE、LostFocus、Validating或Validated事件处理程序中设置焦点。这样做可能会导致应用程序或操作系统停止响应。有关更多信息,请参阅“键盘输入参考”部分中的
WM_KILLFOCUS
主题,以及MSDN库中“关于消息和消息队列”主题的“消息死锁”部分,网址为

更好的解决办法是处理问题。您将在.NET Framework自动提出的
验证
事件处理程序方法中执行输入验证

如果输入有效,则不执行任何操作。如果输入无效,则将
CancelEventArgs
参数的
Cancel
属性设置为
true
,从而抑制所有下游事件

Private Sub myTextBox_Validating(ByVal sender As Object, _
                                 ByVal e As ComponentModel.CancelEventArgs) _
                             Handles myTextBox.Validating
    If Not Valid(myTextBox.Text) Then
        ' Validation failed, so cancel the event and pre-select the text.
        e.Cancel = True
        myTextBox.Select(0, myTextBox.Text.Length)

        ' Optionally (but recommended): Set an ErrorProvider control.
        ' errorProvider.SetError(myTextBox, "Invalid input")
    End If
End Sub

你能准确地把代码放在你正在做的事情上吗?它可以正常工作,但用户在获得有效信息之前不能退出。我希望,该用户可以离开/退出表单,他/她可能输入错误text@Shah这也包含在链接文档中。将“退出”按钮(以及您希望的任何其他控件)的
CausesValidation
属性设置为
true
,以便单击它不会引发
验证
验证
事件。