1

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

我让他们出现了,但他们没有正确出现。条目显示为“十进制 [] 数组”(当然减去引号),而不是 4.55(或其他)。

如何让条目正确显示?代码在下面,它非常不完整,因为我只完成了项目的三分之一,所以除非你看到一些可怕的问题像拇指酸痛一样突出,否则不要担心。

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

结束类

4

2 回答 2

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
于 2013-10-24T18:40:48.287 回答
0

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

如果您想将elements数组添加到列表、列表框等,请改用该AddRange方法。

于 2013-10-24T20:08:56.627 回答