2017-06-16 54 views
1

如何限制输入框在vb中的11个数值?我想让一个人编辑一个电话号码,但似乎与我目前的代码有问题。如何限制输入框为vb的11个数值

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    For Each x As ListViewItem In lvCustomers.Items 
     Dim contactEdit As String 
     If x.Checked Then 
      contactEdit = CInt(InputBox("Modify contact no.")) 
      Do Until contactEdit.Count = 11 
       MessageBox.Show("Maximum numerical digits of 11") 
      Loop 

      x.SubItems(5).Text = contactEdit 

      x.Checked = False 

     End If 
    Next 
End Sub 
+0

https://stackoverflow.com/questions/20686928/input-box-limit- in-vb –

+0

https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.mask – Slai

回答

1

您可以使用正则表达式来检查:

Imports System.Text.RegularExpressions 
'[...] 
Dim isValid As Boolean = Regex.Match("12345", "^\d{0,11}$").Success() 

您的代码可以是这样的:

Imports System.Text.RegularExpressions 
'[...] 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    For Each x As ListViewItem In lvCustomers.Items 
     Dim contactEdit As String 

     If x.Checked Then 
      contactEdit = InputBox("Modify contact no.") 

      Do Until Regex.Match(contactEdit, "^\d{0,11}$").Success() 
       MessageBox.Show("Maximum numerical digits of 11") 
       contactEdit = InputBox("Modify contact no.") 
      Loop 

      x.SubItems(5).Text = contactEdit 
      x.Checked = False 
     End If 
    Next 
End Sub 

您可以在正则表达式定义了输入的最小和最大长度({minValue,maxValue})。输入必须是数字(\d)。您可以在这个网站找到使用正则表达式的解释:https://regex101.com/r/6h7z2u/1

提示:我建议,因为代码引发Exception如果从InputBox值不是一个有效的整数从InputBox删除CInt。通过使用解决方案的RegExp,只能将数字写入InputBox

+0

谢谢你的代码。我在页面顶部声明了Imports System.Text.RegularExpressions。代码“regularexpressions”中的部分是下划线,并表示它没有声明。有什么建议么? – James

+0

如果您使用'Import',则必须删除'Regex'前面的'RegularExpressions.'。从'RegularExpressions.Regex'到'Regex'。查看我的更新。 –

0

可以使用莱恩(contactEdit.Text)= 11而不是contactEdit.Count = 11

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    For Each x As ListViewItem In lvCustomers.Items 
     Dim contactEdit As String 
     If x.Checked Then 
      contactEdit = CInt(InputBox("Modify contact no.")) 
      Do Until Len(contactEdit.Text) >= 11 
       MessageBox.Show("Maximum numerical digits of 11") 
      Loop 
      x.SubItems(5).Text = contactEdit 
      x.Checked = False 
     End If 
    Next 
End Sub