Vb.net 我希望在我的文本框上有一个1,0的组合,比如11010110000101000。如果有人键入140,则会出现错误。我怎样才能写信继续这项工作?

Vb.net 我希望在我的文本框上有一个1,0的组合,比如11010110000101000。如果有人键入140,则会出现错误。我怎样才能写信继续这项工作?,vb.net,error-handling,Vb.net,Error Handling,这些是我的错误检查代码,用于通知键入字符串或数字而不是整数的人。在bc.Text中,我只需要3个长度的0和1的组合,如100101110等。如果有人键入150,我希望消息框显示“请在B.C框中插入适当的数字”。我该怎么做?谢谢你抽出时间 您可以使用一个,如下所示: If (String.IsNullOrEmpty(bc.Text)) Then MsgBox("Please Insert something into the text box.") ElseIf N

这些是我的错误检查代码,用于通知键入字符串或数字而不是整数的人。在bc.Text中,我只需要3个长度的0和1的组合,如100101110等。如果有人键入150,我希望消息框显示“请在B.C框中插入适当的数字”。我该怎么做?谢谢你抽出时间

您可以使用一个,如下所示:

    If (String.IsNullOrEmpty(bc.Text)) Then
        MsgBox("Please Insert something into the text box.")
    ElseIf Not Integer.TryParse(bc.Text, value) Then
        MsgBox("Please Insert number into the B.C text box")
b
仅当它匹配3 1/0的任何组合时才为真


Cheers

一种更原始、性能可能较差的方法是,首先检查长度,然后使用字符串替换命令从字符串中删除所有“1”和“0”字符,如果生成的剥离字符串不是空的,则引发消息框。

您可以使用
SuppressKeyPress
过滤文本框的
KeyDown
事件中的按键,以防止文本框中显示错误值

这是对概念的快速测试:

Imports System.Text.RegularExpressions

...

Dim rg As Regex = New Regex("^[01]{3}$")
Dim test As String = "111"
Dim b as Boolean = rg.IsMatch(test)

你的代码非常合理。Idk为什么我尝试使用if代码将每个值与0,1进行比较。因为用户不能键入其他数字,所以这要容易得多。我还有一个问题。长度控制如何?使用文本框的
MaxLength
属性
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    If Not (e.KeyData = Keys.D1 Or e.KeyData = Keys.NumPad1 _
        Or e.KeyData = Keys.NumPad0 Or e.KeyData = Keys.D0 _
        Or e.KeyData = Keys.Back Or e.KeyData = Keys.Enter _
        Or e.KeyData = Keys.Delete) Then

        Beep()
        e.SuppressKeyPress = True
    End If
End Sub