1

我正在使用以下代码作为自己的学习进度:

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 非常陌生,并且我正在努力扩展我对语言的了解。

4

1 回答 1

3

如果txtNummers1并且txtNummers2是文本框那么你应该写

    Dim waarde1 As Short = Convert.ToInt16(txtNummers1.Text)
    Dim waarde2 As Short = Convert.ToInt16(txtNummers2.Text)

您不能将TextBox类型转换为 Integer 类型。您将 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)

这里是 TryParse 上的 MSDN

于 2013-03-04T08:26:23.540 回答