2015-12-14 122 views
0

您好,我正在尝试创建一个Windows窗体,让用户在文本框中输入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 
+0

六位数字就像100000到999999之间的数字?没有前导零允许? – Steve

+0

这是否甚至编译?您正在声明一个整数并为其分配一个字符串而不进行转换。 –

+2

@roryap这是Option Strict Off允许的混乱 – Steve

回答

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,或者使用转换结果设置变量。

+0

完美谢谢你!我怎么也包括检查,以确保没有信件被添加? – Bcon615

+0

这更复杂。 TextChanged事件应该会有所帮助,但是需要避免复制/粘贴问题。我更喜欢懒惰的方式来解决这类问题。让用户输入任何他喜欢的东西,然后在对输入采取行动之前进行检查。 – Steve

+0

有几种方法可以解决这个问题。 做这样的验证检查'如果isnumeric(txtboxSalesOrder.Text)' 尽快keydown做一个检查,并使用e.handled来防止无效字符。 通常使用select case并指定可接受的asc keykode值范围。 – JoshF

0

史蒂夫的解决方案将工作,很明显,因为你已经测试过,但我会考虑挂钩验证或验证事件,因为当你离开文本框来检查值。

还可以考虑使用errorprovider而不是messagebox。

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 

这将验证您有正确的数据,然后再点击开始按钮。

相关问题