【问题标题】:Visual Basic Validating Textbox inputVisual Basic 验证文本框输入
【发布时间】:2016-05-08 19:52:17
【问题描述】:

我在验证文本框中的用户输入时遇到了一些问题,而且我找不到解决方案。

基本上,该程序是一个 BMI 计算器,当用户选择“计算”按钮时,我正在尝试验证用户输入的“性别”、“身高”和“体重”。以下是我到目前为止的代码:

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button5.Click
    Dim userBMI As BMI
    userBMI.gender = TextBox1.Text
    userBMI.height = TextBox2.Text
    userBMI.weight = TextBox3.Text
    calculatedBMI = (userBMI.weight / userBMI.height) / userBMI.height
    calculatedBmiLbl.Text = calculatedBMI.ToString("n1")
End Sub

我需要验证这些输入的原因是,例如,如果用户为“高度”输入输入一个字符串或根本不输入任何内容,则计算将不起作用,因此程序将中断。我曾考虑过使用某种形式的布尔变量和循环来解决这个问题,但是我对如何做到这一点不是很了解。

如果有人可以借给我一些帮助,那就太好了,如果有人知道实现输入验证的更简单方法,它不一定必须是布尔值,这正是我正在考虑的,谢谢:

【问题讨论】:

  • 在所有必要的文本框上使用Integer.TryParse(),无需循环。如果TryParse() 检查之一返回 False,那么您可以向用户显示一个 MessageBox,然后立即放置 Return 以不执行其余代码。
  • 在玩了一会儿之后,我想我可以弄清楚是否有人可以根据某些条件(如 IF 语句)取消按钮?
  • 哦,哇,完美的哈哈,我一发表评论,你的评论就出现了,哈哈。谢谢视觉文森特,我很感激:D
  • 没问题。这是您可以使用的更简单的解决方案之一。如果有任何不清楚的地方,请告诉我。
  • 嘿,伙计,我仍然在使用 Integer.Tryparse() 方法时遇到了一些麻烦。例如,我尝试过“userBMI.height = Integer.TryParse(TextBox1.Text),但在“TryParse”上出现错误,它告诉我“重载解析失败,因为没有可访问的‘TryParse’接受这个数量的争论”而且我似乎找不到解决办法。

标签: vb.net validation input textbox


【解决方案1】:

以下是检查输入是否输入的验证示例。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button5.Click
    If Len(Trim(TextBox1.Text)) = 0 Then
        MsgBox("Enter Gender", MsgBoxStyle.Exclamation)
        TextBox1.Focus()
    ElseIf Len(Trim(TextBox2.Text)) = 0 Then
        MsgBox("Enter Height", MsgBoxStyle.Exclamation)
        TextBox2.Focus()
    ElseIf Len(Trim(TextBox3.Text)) = 0 Then
        MsgBox("Enter Weight", MsgBoxStyle.Exclamation)
        TextBox3.Focus()
    Else
        Dim userBMI As BMI
        userBMI.gender = TextBox1.Text
        userBMI.height = TextBox2.Text
        userBMI.weight = TextBox3.Text
        calculatedBMI = (userBMI.weight / userBMI.height) / userBMI.height
        calculatedBmiLbl.Text = calculatedBMI.ToString("n1")
    End If
End Sub

【讨论】:

    【解决方案2】:

    尝试 IsNumeric 检查输入的文本是否为数值

    If(IsNumeric(TextBox2.Text) ANDALSO IsNumeric(TextBox3.Text))
        Dim userBMI As BMI
        userBMI.gender = TextBox1.Text
        userBMI.height = TextBox2.Text
        userBMI.weight = TextBox3.Text
    
        calculatedBMI = (userBMI.weight / userBMI.height) / userBMI.height
        calculatedBmiLbl.Text = calculatedBMI.ToString("n1")
    Else
    calculatedBmiLbl.Text = ""
    END IF  
    

    或者使用 Val() 方法

    If(Val(TextBox2.Text)>0 ANDALSO Val(TextBox3.Text)>0)
        Dim userBMI As BMI
        userBMI.gender = TextBox1.Text
        userBMI.height = TextBox2.Text
        userBMI.weight = TextBox3.Text
    
        calculatedBMI = (userBMI.weight / userBMI.height) / userBMI.height
        calculatedBmiLbl.Text = calculatedBMI.ToString("n1")
    Else
    calculatedBmiLbl.Text = ""
    END IF      
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多