我不确定在我的代码中要更改什么,以使列表框显示每个车辆。
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
答案 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).Make
为Nothing
,您无法在ToString
上调用方法(Nothing
):
ls.Items.Add(Vehicles(i).Make.ToString)
这会失败,因为Vehicles(4).Make
是Nothing
,并且您无法将空字符串或空字符串添加到列表框中:
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
希望它有所帮助。