清除vb.net中的所有文本框会引发错误
我使用以下方法作为解决方法:清除vb.net中的所有文本框会引发错误,vb.net,visual-studio,Vb.net,Visual Studio,我使用以下方法作为解决方法: Public Sub ClearTextBox(ByVal root As Control) For Each ctrl As Control In root.Controls ClearTextBox(ctrl) If TypeOf ctrl Is TextBox Then CType(ctrl, TextBox).Text = 0 If TypeOf ctrl Is Com
Public Sub ClearTextBox(ByVal root As Control)
For Each ctrl As Control In root.Controls
ClearTextBox(ctrl)
If TypeOf ctrl Is TextBox Then CType(ctrl, TextBox).Text = 0
If TypeOf ctrl Is ComboBox Then CType(ctrl, ComboBox).Text = String.Empty
Next ctrl
End Sub
我将文本框设置为0的原因是,当我设置String.Empty时,一个文本框(仅包含Int16)抛出转换错误。是否有人帮助停止错误或忽略一个文本框
根据Andrews的回复,我再次运行了代码,得到以下结果:
+$exception{“从字符串“”到类型'Short'的转换无效。”}System.InvalidCastException
突出显示的代码是:
变暗为Int16=Txt\u字符。Text
请容忍我一点,我对这个完全陌生,而且完全自学成才。如果您需要进一步的代码来帮助,请告诉我。
当您有这样一条线路时,谢谢
Dim age As Int16 = Txt_CharAge.Text
你在告诉计算机把一个字符串转换成一个数字。如果没有Option Strict On,它可以自由地将字符串(不是Int16)填充到Int16中。你已经放弃了对当时发生的事情的控制
更好的方法是告诉它如何将文本中的字符转换为数字。(请参阅,以了解某事物的表示形式不是该事物的解释。)
对于许多内置类型,有一组现成的方法名为TryParse
因此,与其
Dim age As Int16 = Txt_CharAge.Text
你应该
Dim age As Integer
Integer.TryParse(Txt_CharAge.Text, age)
TryParse
方法实际上是函数,如果解析成功,它们将返回True
,否则它们将返回False
(并将变量设置为其默认值),但在这种情况下,您似乎不需要知道解析是否成功,因为整数的默认值0就足够了
请注意,实际上不需要使用Int16而不是整数,除非您知道为什么需要添加使用Int16而不是整数的复杂性。好的,谢谢您更新问题。当
Txt\u CharAge.Text
中没有任何字符时,您希望age
的值是多少?它不必是任何内容,只要一个空字符串就可以了。解决方法,适用于该文本框,但我有其他方法通常会包含实际文本,而0可以工作,当你知道它在寻找文本答案而不是整数时,它看起来非常奇怪。解决方法是Dim age As Integer=cint(“0”+Txt\u CharAge.text.trim())
这将始终是一个有效数字。请注意,这对+/-符号不起作用。太好了,谢谢您的完整解释,这真的很有帮助。@Silver616谢谢,很高兴您发现它有用:)