我使用以下代码作为我自己的学习进度:
Public Class Form1
Private Sub BtnAntwoord_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAntwoord.Click
Dim testNummer As Integer
Dim uitkomst As Single
Dim waarde1 As Integer = Convert.ToInt16(txtNummers1)
Dim waarde2 As Integer = Convert.ToInt16(txtNummers2)
uitkomst = (waarde1 * waarde2)
testNummer = Convert.ToString(uitkomst)
MsgBox(testNummer)
End Sub
End Class
我想要完成的是一个带有2个文本字段和一个按钮的小窗口,当按下时,会在弹出窗口中显示问题“waarde 1 * waarde2”的答案。
执行此代码时,会出现以下错误:
InvalidCastException was unhandled
和行“waarde1 As Integer = Convert.ToInt16(txtNummers1)”是高亮的
我本人并不是在寻找答案,只是理解为什么这不起作用,因为我对vb.net非常陌生并且我正在努力扩展我对该语言的了解。
答案 0 :(得分:3)
如果txtNummers1
和txtNummers2
是文本框,则应编写
Dim waarde1 As Short = Convert.ToInt16(txtNummers1.Text)
Dim waarde2 As Short = Convert.ToInt16(txtNummers2.Text)
您无法将TextBox
类型转换为整数类型。您将TextBox的Text(字符串类型)属性转换为Integer,假设此属性实际包含一个数字。
另外,为什么要转换为16位数字类型,然后将结果分配给32位类型?
更好的方法是以下
Dim waarde1 As Short
Dim testNum as String = txtNummers1.Text
if Int16.TryParse(testNum, waarde1) Then
Console.WriteLine("It is a 16 bit number " + waarde1.ToString)
else
Console.WriteLine("Not a 16 bit number " + waarde1.ToString)