无法从数组中获取小数条目以显示在列表框中

时间:2013-10-24 17:57:13

标签: vb.net visual-studio-2012

在我的VB类中,我们被要求设置一个由用户条目填充的数组。这些条目是十进制类型,意思是汽油价格。每月有十二个,一个。这些条目应该在列表框中输入和处理时一次显示一个。

我让他们出现但他们没有正常出现。而不是4.55(或其他),条目显示为“Decimal [] Array”(当然减去引号)。

如何让参赛作品正确显示?代码在下面,它非常不完整,因为我只有大约三分之一的项目进展,所以除非你看到像拇指疼痛一样突然出现一些可怕的问题,否则不要大汗淋漓。

Public Class GasPrices
Dim prices(11) As Decimal

Private Sub EnterButton_Click(sender As Object, e As EventArgs) Handles EnterButton.Click
    prices(PriceList.Items.Count) = Convert.ToDecimal(PriceText.Text)
    PriceText.Clear()

    For i = 0 To 11
        prices(i) = i
    Next i

    PriceList.Items.Add(prices)

End Sub

Private Sub PriceList_SelectedIndexChanged(sender As Object, e As EventArgs) Handles PriceList.SelectedIndexChanged
    PriceList.Items.Clear()
    PriceList.Items.Add(prices)
End Sub

结束班

2 个答案:

答案 0 :(得分:1)

您将整个数组添加为一个“条目”。您需要使用语法添加每个条目,就像您在循环中访问prices(i)的位置一样。

Public Class GasPrices

    Private prices(11) As Decimal

    Private Sub EnterButton_Click(sender As Object, e As EventArgs) Handles EnterButton.Click
        If PriceList.Items.Count < 12 Then
            Dim price As Decimal
            If Decimal.TryParse(PriceText.Text, System.Globalization.NumberStyles.Currency, Nothing, price) Then
                prices(PriceList.Items.Count) = price
                PriceList.Items.Add(price)

                PriceText.Clear()
                PriceText.Focus()
            Else
                MessageBox.Show("Invalid Price!")
            End If
        Else
            MessageBox.Show("12 entries have already been entered!")
        End If
    End Sub

    Private Sub PriceList_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles PriceList.SelectedIndexChanged
        If PriceList.SelectedIndex <> -1 Then
            Label1.Text = PriceList.SelectedItem
        End If
    End Sub

End Class

答案 1 :(得分:0)

这很简单。使用Add,您可以将数组本身作为单个对象添加到列表框中。列表框的默认行为是为每个条目显示object.ToString。并且由于对象是一个小数组数组,因此会得到不需要的输出。

如果要将数组的elements添加到列表,列表框,...,请使用AddRange方法。