设置焦点以控制在cantrol验证事件中验证事件时永不结束循环

时间:2012-05-09 06:23:42

标签: vb.net validation

我正在编写以下代码来验证强制性字段帐户号码。通知。 当出现错误时,用户的要求将重点放在字段上:

If txtAccountNo = "" Then

    MessageBox.Show("Account no filed can't be left empty")
    txtAccountNo.SetFocus
    Exit Sub

End If

它正常工作。但是假设用户不想填写表单并退出应用程序。 消息框一直显示,直到用户输入帐号

我该如何避免这种情况? 请帮忙。

2 个答案:

答案 0 :(得分:0)

设置一个标志以指示用户已看到消息框。检查标志以防止将来的任何消息框。确保在将焦点设置回文本框之前将标志设置为,例如

dim bMsgBox as boolean=false

If txtAccountNo = "" and bMsgBox = false Then

    MessageBox.Show("Account no filed can't be left empty")
    bMsgBox=true
    txtAccountNo.SetFocus
    Exit Sub

End If

答案 1 :(得分:0)

你可以将所有验证规则放在一个函数/ procedure / subrutine中(我不熟悉VB,主要是C ++ / C#用户)。然后仅在用户提交填写的数据时调用此函数,并将焦点设置为第一个控件,并且未填充强制数据或输入无效数据。

假设您有一个包含3个控件的表单:

  • 日期控制不是强制性的 - dteDate
  • 必填文本框 - txtAccoutInfo
  • 必填文本框 - txtAddress

和2个按钮:

  • 按钮保存并按钮取消。

按下“保存”按钮时,首先调用功能/程序以验证用户输入。如果在dteDate中输入的日期无效,则将焦点设置在它上面并返回/退出该函数;如果在txtAccountInfo中没有输入文本,则将焦点设置在它上面并返回/退出该函数;如果在txtAddress中没有输入文本,则将焦点设置在它上并返回/退出。

按下“取消”时,您不会调用此功能,只是退出。