我希望我的车辆结构能够在列表框中显示

时间:2014-03-06 16:16:56

标签: vb.net visual-studio-2012

我不确定在我的代码中要更改什么,以使列表框显示每个车辆。

Public Class Form1

Structure Vehicle
    Dim Make As String
    Dim Model As String
    Dim Doors As Integer
    Dim Hp As Integer
    Dim VIN As String
End Structure




Private Sub btnGo_Click(sender As Object, e As EventArgs) Handles btnGo.Click
    Dim Vehicles(9) As Vehicle

    Vehicles(0).Make = "Chevrolet"
    Vehicles(1).Make = "Dodge"
    Vehicles(2).Make = "Nissan"
    Vehicles(3).Make = "Mitsubishi"

制作for循环以显示每个制作

    For i = 0 To 4 Step 1
        ls.Items.Add(Vehicles(i).Make.ToString)

    Next


End Sub

2 个答案:

答案 0 :(得分:1)

您只向4个实例(0-3)提供数据:

Vehicles(0).Make = "Chevrolet"
Vehicles(1).Make = "Dodge"
Vehicles(2).Make = "Nissan"
Vehicles(3).Make = "Mitsubishi"

但您正在尝试从5个实例(0-4)中检索数据:

For i = 0 To 4 Step 1
除非您为其指定值,否则

String默认为Nothing。所以你的第5个实例是Vehicle的空实例。因此...

这会失败,因为Vehicles(4).MakeNothing,您无法在ToString上调用方法(Nothing):

ls.Items.Add(Vehicles(i).Make.ToString)

这会失败,因为Vehicles(4).MakeNothing,并且您无法将空字符串或空字符串添加到列表框中:

ls.Items.Add(Vehicles(i).Make)

您需要:

  • 调整循环以仅覆盖您拥有的数据(For i = 0 To 3 Step 1)或
  • 添加其他数据元素(Vehicles(4).Make = "Something")或
  • 向代码(If Vehicles(i).Make Is Not Nothing
  • 添加空检查

答案 1 :(得分:0)

为什么不尝试使用Class代替Structure,而使用list代替array。因为看起来你自己也不会有多长时间,所以在这种情况下list对你来说是一个不错的选择,你可以把它当作c / c ++中的动态数组。以下是我的解释方式

Public Class Form1

Class Vehicle
    Dim Make As String
    Dim Model As String
    Dim Doors As Integer
    Dim Hp As Integer
    Dim VIN As String

Public Sub New(Dim s As String)
    Me.Model=s
End Sub
End Class




Private Sub btnGo_Click(sender As Object, e As EventArgs) Handles    btnGo.Click
Dim Vehicles As New List(Of Vehicle)

Vehicles.Add(New Vehicle("Chevrolet"))
Vehicles.Add(New Vehicle("Dodge"))
Vehicles.Add(New Vehicle("Nissan"))
Vehicles.Add(New Vehicle("Mitsubishi"))

当你循环它时,

Dim car as Vehicle
For each car in Vehicles
    ls.Items.Add(car.Make)
Next

希望它有所帮助。