Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 无效的强制转换预期未受影响(在检查文本框内容时)_Vb.net - Fatal编程技术网

Vb.net 无效的强制转换预期未受影响(在检查文本框内容时)

Vb.net 无效的强制转换预期未受影响(在检查文本框内容时),vb.net,Vb.net,此代码来自检查文本框条目是否符合指定条件(1到100之间的整数)的子例程 第一个IF语句应该检查它是否不是数字条目。如果不是数字,则文本框的内容应设置为空,以便输入数字 第二个IF语句应该检查数字是否大于100。如果是,则文本框的内容应设置为空,以便输入适当的数字 第三个IF语句应该检查数字是否小于1。如果是,则文本框的内容应设置为空,以便输入适当的数字 最后,框中的内容应设置为变量 我最初自己编写了第一个IF语句,它成功了。但是,当我在文本框中键入任何内容时,如果添加其他内容,我的程序就会崩溃

此代码来自检查文本框条目是否符合指定条件(1到100之间的整数)的子例程

第一个IF语句应该检查它是否不是数字条目。如果不是数字,则文本框的内容应设置为空,以便输入数字

第二个IF语句应该检查数字是否大于100。如果是,则文本框的内容应设置为空,以便输入适当的数字

第三个IF语句应该检查数字是否小于1。如果是,则文本框的内容应设置为空,以便输入适当的数字

最后,框中的内容应设置为变量

我最初自己编写了第一个IF语句,它成功了。但是,当我在文本框中键入任何内容时,如果添加其他内容,我的程序就会崩溃,错误如标题中所述。我查看了多个解决方案,但在近2天的时间里都没有找到解决问题的方法

如有任何建议,将不胜感激

Public Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles NumQTextBoxInput.TextChanged
            'Check if input is numeric
            If Not IsNumeric(NumQTextBoxInput.Text) Then NumQTextBoxInput.Text = ""
            If (NumQTextBoxInput.Text > 100) Then
                NumQTextBoxInput.Text = ""
            End If
            If (NumQTextBoxInput.Text < 1) Then
                NumQTextBoxInput.Text = ""
            End If
            ArchwayComputingExamCreator.GlobalVariables.NumOfQuestions = NumQTextBoxInput.Text
            'Setting the variable to the contense

        End Sub
Public Sub TextBox1\u TextChanged(发送方作为对象,e作为事件参数)处理NumQTextBoxInput.TextChanged
'检查输入是否为数字
如果不是IsNumeric(NumQTextBoxInput.Text),则NumQTextBoxInput.Text=“”
如果(NumQTextBoxInput.Text>100),则
NumQTextBoxInput.Text=“”
如果结束
如果(NumQTextBoxInput.Text<1),则
NumQTextBoxInput.Text=“”
如果结束
ArchwayComputingExamCreator.GlobalVariables.NumOfQuestions=NumQTextBoxInput.Text
'将变量设置为上下文
端接头
在此操作中:

If Not IsNumeric(NumQTextBoxInput.Text) Then NumQTextBoxInput.Text = ""
只要输入不是数字,就可以将其设置为仍然不是数字的值。因此,任何数字比较都将失败:

If (NumQTextBoxInput.Text > 100)
也许您想将该值设置为某个数字默认值?:

If Not IsNumeric(NumQTextBoxInput.Text) Then NumQTextBoxInput.Text = "0"
或者在不是数值的情况下完全退出该方法

If Not IsNumeric(NumQTextBoxInput.Text) Then
    NumQTextBoxInput.Text = ""
    Return
End If

或者别的什么?无论如何修改逻辑,关键是不能对非数字字符串执行数字比较。

在接受数字文本时,应始终使用适当的解析函数

Public Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles NumQTextBoxInput.TextChanged

    Dim Value as integer
    If Not Integer.TryParse(NumQTextBoxInput.text, Value) OrElse Value < 1 OrElse Value > 100 Then NumQTextBoxInput.Text = ""

    ... no idea if the archway bit is really what you wanted so left that out .... 

    End Sub
Public Sub TextBox1\u TextChanged(发送方作为对象,e作为事件参数)处理NumQTextBoxInput.TextChanged
将值设置为整数
如果不是Integer.TryParse(NumQTextBoxInput.text,Value)或lse值<1或lse值>100,则NumQTextBoxInput.text=“”
... 不知道拱门是否真的是你想要的,所以忽略了。。。。
端接头

启用选项Strict。文本框不包含数字,仅包含文本。所以
如果(NumQTextBoxInput.Text>100),那么
是一个无意义的测试。如果控件包含“Ziggy”,则该值是否大于或小于100?除了循环部分。