【发布时间】:2019-11-07 00:36:27
【问题描述】:
我确信对此有一个简单的解决方案,但它让我无法理解。我有一个表格,上面有三个文本框。在运行主代码之前,我想确保每个文本框都有数据。我已经将“hasData”初始化为决定代码是否可以继续运行的变量。我在 Do While 循环中评估 hasData,但代码发现存在没有数据的文本框并将 hasData 变量设置为“False”。但是我在一个连续的循环中,消息框永远不会消失,让您在空文本框中输入文本。
感谢您的帮助。
Dim hasData As String
hasData = "False"
Do While hasData = "False"
If txtTechManName.Text.Trim = "" Or txtDirectory.Text.Trim = "" Or txtBxUnique.Text.Trim = "" Then
btnExecute.Enabled = False
hasData = "False"
MsgBox(" Please fill all text boxes on form ")
' this resulted in an endless loop of the msgBox. It didn't let me add text to the empty fields
Else
btnExecute.Enabled = True
hasData = "True"
End If
Loop
If (hasData = "True") Then
searchDir = txtDirectory.Text
Prefix = txtBxUnique.Text
Dim manualName = txtTechManName.Text
【问题讨论】:
-
首先,当
hasData用于表示布尔值时,为什么要将其声明为String类型? -
你在做什么来触发表单验证?
-
是的,我希望 hasData 为布尔值,但一直出错。
-
当然不是。这才是重点。这是不应该的。如果您继续执行代码,那么用户将无法修复没有数据的事实。您需要停止执行代码,以便用户可以输入数据,然后需要以某种方式再次启动验证,方法是单击
Button或其他方式。如果你不这样做,那么你期待魔法来解决它。您需要了解 GUI 的工作原理。 -
查看Control.Validating 事件。主要兴趣点是ErrorProvider 类。