将ListBox1中的每个String转换为Integer并添加到ListBox2:格式错误的输入字符串

时间:2018-03-09 22:08:58

标签: vb.net

我有一个TextBox,两个ListBox和两个Buttons。第一个Button分隔TextBox中的每个String,并将它们逐个添加到ListBox1。第二个Button将每个String转换为Integer。但是我得到了调试器抛出的异常:

  

输入字符串格式不正确。

System.FormatException was unhandled
HResult=-2146233033
Message=Cadeia de caracteres de entrada com formato incorrecto.
Source=mscorlib
StackTrace:
   em System.Number.StringToNumber(String str, NumberStyles options, 
NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   em System.Number.ParseDecimal(String value, NumberStyles options, 
NumberFormatInfo numfmt)
   em System.Convert.ToDecimal(String value)
   em g_.Form2.Button2_Click(Object sender, EventArgs e) em 
C:\Users\Utilizador\Documents\Visual Studio 
2012\Projects\g+\g+\Form2.vb:line 17

我已插入代码来清理空白区域,但它继续抛出相同的错误。 在反思问题之后,我决定改变做法的方式

这是我的代码:

Public Class Form2
    Dim frequency
    Dim interval
    Dim textconverted

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim myArray() As Char
        myArray = Me.TextBox1.Text.ToCharArray
        For Each chr As Char In Me.TextBox1.Text
            ListBox1.Items.Add(chr)
        Next
        For i As Integer = ListBox1.Items.Count - 1 To 0 Step -1
            If ListBox1.GetItemText(ListBox1.Items(i)) = String.Empty Then
                ListBox1.Items.RemoveAt(i)
            End If
        Next i
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    For i As Integer = 0 To ListBox1.Items.Count - 1
        If (ListBox1.Items(i).ToString.Contains("a")) Then
            ListBox2.Items.Add("1") 'Indexing is zero-based
            Exit For
        End If
    Next
End Sub
End Class

2 个答案:

答案 0 :(得分:0)

我找到了一种不同的方式来做它并做它我需要的。

这是可行的解决方案     公共类Form2     昏暗的频率     昏暗的间隔     昏暗的文字转换

{{1}}

但是现在我还有其他问题,它只检查一个字符串 如何在那里验证多个字符串?

答案 1 :(得分:0)

我将.ToString添加到你的按钮2代码,它运行正常。打开Option Strict;你会避免一些运行时错误。我发布了代码,它将处理a-z而不是一堆if语句。将.ToLower添加到TextBox1.Text.ToLower myArray永远不会被使用myVariable。

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            For x As Integer = 0 To ListBox3.Items.Count - 1
                Dim s As String = (Asc(ListBox3.Items(x).ToString) - 96).ToString
                ListBox2.Items.Add(s)
            Next
End Sub