【发布时间】:2019-06-22 14:32:57
【问题描述】:
在我的程序(openFile_Click)的一个私有子程序中,我更改了我在公共类中调暗的变量,称为名称、距离和点。但是当我尝试从另一个私人子(btnGameEnter)重新打印它们时,它们是空白的。我知道变量在 openFile sub 测试后已正确设置,并且不知道为什么在 openFile sub 中完成的相同过程(将变量添加到列表框)在 btnGameEnter sub 中不起作用,其中变量应该已经有来自 openFile 的数据。
Public Class frmdetails
Dim Names(100) As String
Dim Distance(100, 2) As String
Dim Points(100, 2) As String
Private Sub openFile_Click(sender As Object, e As EventArgs) Handles openFile.Click
OpenFileDialog.ShowDialog()
Dim strFileName = OpenFileDialog.FileName
Dim objReader As New System.IO.StreamReader(strFileName)
Dim textline As String
lstNames.Items.Clear()
lstDistance.Items.Clear()
lstPoints.Items.Clear()
Dim Count As Integer = 0
Do While objReader.Peek() <> -1
textline = objReader.ReadLine() & vbNewLine
Dim parts() As String = textline.Split("|")
Names(Count) = parts(0)
Distance(Count, 0) = parts(1)
Distance(Count, 1) = parts(2)
Distance(Count, 2) = parts(3)
Points(Count, 0) = parts(4)
Points(Count, 1) = parts(5)
Points(Count, 2) = parts(6)
Count = Count + 1
Loop
For n = 0 To Count - 1
lstNames.Items.Add(Names(n))
lstNames.Items.Add(" ")
lstDistance.Items.Add(Distance(n, 0) + " Miles")
lstDistance.Items.Add(" ")
lstPoints.Items.Add(Points(n, 0))
lstPoints.Items.Add(" ")
Next
End Sub
Private Sub btnGameEnter_Click(sender As Object, e As EventArgs) Handles btnGameEnter.Click
Dim ChosenGame As Integer = 0
Dim Count As Integer = 0
ChosenGame = cboWhichGame.Text
lstGameNum.Items.Clear()
lstNames.Items.Clear()
lstDistance.Items.Clear()
lstPoints.Items.Clear()
lstGameNum.Items.Add(ChosenGame)
For n = 0 To Count - 1
lstNames.Items.Add(Names(n))
lstNames.Items.Add(" ")
lstDistance.Items.Add(Distance(n, (ChosenGame - 1)) + " Miles")
lstDistance.Items.Add(" ")
lstPoints.Items.Add(Points(n, (ChosenGame - 1)))
lstPoints.Items.Add(" ")
Next
End Sub
End Class
【问题讨论】:
-
这是一个非常标准的错误,您有不止一次 frmdetails 类的实例。您正在查看的一个和一个创建不正确且不可见的一个。添加
Public Sub New并在其上设置断点。第二次命中时,您会在调试器的 Stack Trace 窗口中找到该错误。
标签: arrays vb.net multidimensional-array text-files streamreader