I'm trying to add a number to a listbox that a user enters into a textbox. The program crashes when I press the button.

Public Class Form1

    Dim numbers() As Integer
    Dim numNumbers As Integer = 0

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        e.Handled = NumbersOnly(e.KeyChar, TextBox1)
    End Sub
    Private Function NumbersOnly(ByVal pstrChar As Char, ByVal oTextBox As TextBox) As Boolean
        'validate the entry for a textbox limiting it to only numeric values and the decimal point
        If (Convert.ToString(pstrChar) = "." And InStr(oTextBox.Text, ".")) Then Return True 'accept only one instance of the decimal point
        If Convert.ToString(pstrChar) <> "." And pstrChar <> vbBack Then
            Return IIf(IsNumeric(pstrChar), False, True) 'check if numeric is returned
        End If
        Return False 'for backspace
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text <> "" Then
            numNumbers = numNumbers + 1
            numbers(numNumbers) = TextBox1.Text
            ListBox1.Items.Add(numbers(numNumbers).ToString())
        Else
            numNumbers = numNumbers + 0
        End If
    End Sub
End Class

Recommended Answers

All 2 Replies

Not quite clear what you are trying to do with the numbers() and numNumbers, but using the ReDim Statement should help.

Private numbers() As Double '// changed to Double since TextBox allows ".".
    Private numNumbers As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Not TextBox1.Text = "" Then
            ListBox1.Items.Add(TextBox1.Text)
            ReDim Preserve numbers(numNumbers)
            numbers(numNumbers) = CDbl(TextBox1.Text)
            numNumbers += 1
        End If
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        '// For testing.
        MsgBox(numbers(ListBox1.SelectedIndex).ToString) '// display the number added to your numbers Array.
    End Sub

If i understood you correctly, all you have to do with the addButton_clicked event is this

Private Sub addButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click

        ListBox1.Items.Add(TextBox1.Text)

    End Sub

Then for the numeric validation for the textbox, simply check with an if statement, example:

If Not IsNumeric(textbox1.Text) Then
             MessageBox.Show("Non-numeric value entered. Please try again.", "User Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            
             textbox1.Focus()
            
              Exit Sub
         
           End If

I dont know if this is what you're looking for. Hope it helps anyway.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.