Vb.net 无效的强制转换预期未受影响(在检查文本框内容时)
此代码来自检查文本框条目是否符合指定条件(1到100之间的整数)的子例程 第一个IF语句应该检查它是否不是数字条目。如果不是数字,则文本框的内容应设置为空,以便输入数字 第二个IF语句应该检查数字是否大于100。如果是,则文本框的内容应设置为空,以便输入适当的数字 第三个IF语句应该检查数字是否小于1。如果是,则文本框的内容应设置为空,以便输入适当的数字 最后,框中的内容应设置为变量 我最初自己编写了第一个IF语句,它成功了。但是,当我在文本框中键入任何内容时,如果添加其他内容,我的程序就会崩溃,错误如标题中所述。我查看了多个解决方案,但在近2天的时间里都没有找到解决问题的方法 如有任何建议,将不胜感激Vb.net 无效的强制转换预期未受影响(在检查文本框内容时),vb.net,Vb.net,此代码来自检查文本框条目是否符合指定条件(1到100之间的整数)的子例程 第一个IF语句应该检查它是否不是数字条目。如果不是数字,则文本框的内容应设置为空,以便输入数字 第二个IF语句应该检查数字是否大于100。如果是,则文本框的内容应设置为空,以便输入适当的数字 第三个IF语句应该检查数字是否小于1。如果是,则文本框的内容应设置为空,以便输入适当的数字 最后,框中的内容应设置为变量 我最初自己编写了第一个IF语句,它成功了。但是,当我在文本框中键入任何内容时,如果添加其他内容,我的程序就会崩溃
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?除了循环部分。