数据在recors中丢失

时间:2015-11-05 23:08:56

标签: vb.net

Private Sub btnNextStudent_Click(sender As Object, e As EventArgs) Handles btnNextStudent.Click
        If txtExam1.Text > 100 Or txtExam2.Text > 100 Or txtExam1.Text < 0 Or txtExam2.Text < 0 Then
            MsgBox("You entered a mark higher than 100 or lower than 0. Please try again.",, "Input Error")
        Else
            ReDim StudentRecords(NumOfStudents + 1)
            btnFinished.Enabled = True
            StudentRecords(Index).StudentName = txtStudentName.Text
            StudentRecords(Index).Exam1Mark = txtExam1.Text
            StudentRecords(Index).Exam2Mark = txtExam2.Text
            MsgBox(StudentRecords(0).Exam2Mark)
            Index += 1
            NumOfStudents += 1
            txtStudentName.Clear()
            txtExam1.Clear()
            txtExam2.Clear()

这是我现在的代码,我正在尝试将数据保存在记录中的文本框“txtStudentName”,“txtExam1”和“txtExam2”中。唯一的问题是每次点击按钮“btnNextStudent”之间的数据都会丢失。我不知道我做错了什么或如何解决它。

谢谢

1 个答案:

答案 0 :(得分:-1)

原因是:

StudentRecords(Index).StudentName一次又一次被替换。你只需给它一个新值。这在字符串中是不可能的。如果要跟踪多个值,则应创建一个包含字符串的“列表”。

// Declare outside of button
Public StudentNameList As New List(Of String)()
Public Exam1MarkList As New List(Of String)()
Public Exam2MarkList As New List(Of String)()

// Add values when clicked
StudentNameList.Add(txtStudentName.Text)
Exam1MarkList(txtExam1.Text)
Exam2MarkList(txtExam2.Text)

// Retrieve values from your list
For Each Str As String In StudentNameList
    MessageBox.Show(str)
Next

我现在正在使用Mac,因此无法向您保证代码是正确的。但这就是你问题的原因。