2015-11-05 27 views
-4
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”后数据都会丢失。我不知道我在做什么错误或如何解决它。数据丢失在recors

感谢

+1

我很困惑...''txtExam1.Clear()'清除该文本框控件中的输入...并且每次单击'btnNextStudent'时它都会运行。这就是你所说的“每次点击之间的数据丢失......”? –

回答

-1

原因是这样的:

StudentRecords(指数).StudentName是越来越一次又一次地更换。你只需给它一个新的价值。这在字符串中是不可能的。如果你想跟踪多个值,你应该创建一个包含你的字符串的“List”。

// 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上,所以我不能向你保证代码是正确的。但这是你的问题的原因。