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つのテキストフィールドとボタンを備えた小さなウィンドウです。ボタンを押すと、ポップアップウィンドウに「waarde1*waarde2」という質問に対する答えが表示されます。

このコードを実行すると、次のエラーが表示されます。

 InvalidCastException was unhandled

「waarde1AsInteger= 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型を整数型に変換することはできません。TextBoxのText(文字列型)プロパティを整数に変換します。このプロパティに実際には数値が含まれていると仮定します。
また、なぜ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 に答える