将用户输入与整数或数组进行比较

时间:2015-12-14 21:41:30

标签: vb.net winforms

您好我正在尝试创建一个窗口表单,让用户在文本框中输入一个6位数的销售订单。然后,点击“开始”按钮并检查以确保用户实际输入了6个整数。谢谢!

Public Class Form1
Private Sub startButton_Click(sender As Object, e As EventArgs) Handles startButton.Click
    Dim salesOrder As integer 
    salesOrder = txtboxSalesOrder.Text
    If salesOrder 'Is a 6-digit integer 
    Then
    '.....Do Something


Private Sub txtboxSalesOrder_TextChanged(sender As Object, e As EventArgs) Handles txtboxSalesOrder.TextChanged
  End Sub
End Class

2 个答案:

答案 0 :(得分:0)

您只需要将文本框中的输入转换为整数并检查获得的值

Dim salesOrder As integer 
If Int32.TryParse(txtboxSalesOrder.Text, salesOrder) Then
   If salesOrder >= 100000 andalso salesOrder <= 999999 Then 
      ' valid number 
   else
      MessageBox.Show("Not a 6 digits number")
   End if
Else
   MessageBox.Show("Please type a number between 100000 and 999999")
End If

请注意,您的代码会尝试自动将文本框中键入的内容转换为整数。这当然是导致错误的途径。您不应该这样做,并且您应该将项目的Option Strict设置为On以在编写此类潜在错误代码时获得早期错误。

相反,Int32.TryParse检查您是否有有效数字,否则返回false,或者使用转换结果设置您的变量。

答案 1 :(得分:0)

史蒂夫的解决方案可以正常工作,显然你已经对它进行了测试,但我会考虑在你离开文本框检查价值时挂钩验证或验证事件。

另请考虑使用errorprovider而不是消息框。

Private Sub txtboxSalesOrder_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtboxSalesOrder.Validating
    If IsNumeric(sender.Text) Then
        If <> sender.text.ToString.Length = 6 Then
            MessageBox.Show("Please type a number between 100000 and 999999")
        End If
    End If  
End Sub

在点击“开始”按钮之前,这将验证您是否有正确的数据。