2017-07-18 42 views
0

那麼,我有這段代碼。我想將文本框的內容存儲到一個字符串數組中(我首選使用字符串列表),然後將數組的每個元素打印到另一個文本框中。然而,當我嘗試編譯此代碼我收到此錯誤信息: System.InvalidCastException:「從字符串轉換‘’爲int無效」 出現FormatException:輸入字符串是不是正確的格式如何解決vb.net中的system.invalidcastexception

有什麼建議?

Public Class NewUser 

Dim textUser As String 
Dim strUserName As New List(Of String) 
Private Sub btnCreateUser_Click(sender As Object, e As EventArgs) Handles btnCreateUser.Click 
    textUser = txtNewUser.Text 
    If textUser <> "" Then 
     strUserName.Add(textUser) 
     txtNewUser.Clear() 
    Else 
     MsgBox("Username or Password is missing. Try again!") 
    End If 
    For Each i As String In strUserName 
     TextBox1.Text = String.Join(",", strUserName(i)) 
    Next i 
End Sub 

End Class 
+0

哪一行會拋出異常? – David

+0

@David TextBox1.Text = String.Join(「,」,strUserName(i)) –

回答

4

目前尚不清楚,我在所有你想要做什麼在這裏:

For Each i As String In strUserName 
    TextBox1.Text = String.Join(",", strUserName(i)) 
Next i 

對於初學者來說,i是一個字符串,你要使用它像一個整數作爲數組的索引。但是,即使你把它糾正這個:

String.Join(",", i) 

這仍然試圖加入一個字符串。這可能也不會編譯,但即使它不會在邏輯上做任何事情。除此之外,每次循環迭代時都覆蓋TextBox1.Text,所以最好是它只會等於數組中的最後一個值。

如果你只是想在陣列加入到該文本框,這是一條線:

TextBox1.Text = String.Join(",", strUserName) 

無需循環。

+0

那麼我是新來的vb.net,我認爲我不得不使用循環,以獲得列表中的所有元素。非常感謝你的工作! –

+1

@ierostsant:你*可以*,但循環的主體看起來更像:'TextBox1.Text = TextBox1.Text + i +「,」'但是那麼你也需要考慮額外的逗號結束,或者通過之後的刪除或者在循環內添加一個基於數組長度的條件。確切原因,使用String.Join()更容易。但是由於'String.Join()'需要一個數組,所以不需要循環。你只需給它整個數組,並在內部循環該數組。 – David

+0

你非常有幫助再次感謝你。 –