2013-03-04 81 views
1

我使用下面的代碼作爲自己學習的進步:Convert.ToInt16 vb.net

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爲整數= Convert.ToInt16(txtNummers1)」是反白標明

我不是尋找一個回答本身,只是理解爲什麼這不起作用,因爲我對vb.net非常陌生,我正在努力擴展我對這門語言的瞭解。

+0

我不知道,如果你與VB6的代碼vb.net工作?在VB6中,'.Text'是默認屬性。 – 2013-03-05 11:46:30

+0

@MarkHurd我如何知道我使用的是什麼代碼?我正在使用Microsoft Visual Basic 2010 express – Gutanoth 2013-03-05 11:48:45

+0

這只是代碼會像在VB6中一樣有效地工作,所以我想知道你是否可能從VB6教程開始工作。 – 2013-03-05 11:51:57

回答

3

如果txtNummers1txtNummers2是文本框,那麼你應該寫

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) 

Here MSDN on TryParse

+0

非常感謝! .text是告訴代碼,我從文本框中獲取它? – Gutanoth 2013-03-04 08:28:01

+1

TextBox類包含Text屬性。該屬性接收用戶鍵入的文本或顯示您以編程方式設置的文本。 – Steve 2013-03-04 08:34:34