繁体   English   中英

如何在Visual Basic中修改数组中的值

[英]How to modify a value in the array in visual basic

以下是我用于创建二维数组的代码

Public Class frmGrades
Private Score As Dictionary(Of String, String) = New Dictionary(Of String, String)

Private Sub cmdApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdApply.Click
    Static intNumber As Integer
    ReDim Preserve Score(1, intNumber)
    Score(0, intNumber) = txtStudent.Text
    Score(1, intNumber) = txtGrade.Text
    hsbStudent.Maximum = intNumber
    hsbStudent.Value = intNumber
    intNumber = intNumber + 1
    txtGrade.Clear()
    txtStudent.Clear()
    txtStudent.Focus()

End Sub

Private Sub hsbStudent_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles hsbStudent.Scroll
    txtStudent.Text = Score(0, hsbStudent.Value)
    txtGrade.Text = Score(1, hsbStudent.Value)

End Sub

Private Sub cmdFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFirst.Click
    txtStudent.Text = Score(0, hsbStudent.Minimum)
    txtGrade.Text = Score(1, hsbStudent.Minimum)

End Sub

Private Sub cmdLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLast.Click
    txtStudent.Text = Score(0, hsbStudent.Maximum)
    txtGrade.Text = Score(1, hsbStudent.Maximum)
End Sub

**Private Sub CmdEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdEdit.Click

    If Score.ContainsKey(txtStudent.Text) Then
        Score.Item(txtStudent.Text) = txtGrade.Text
    Else
        Score.Add(txtStudent.Text, txtGrade.Text)
    End If
End Sub

最终舱**

现在,我想编辑成绩文本框,该文本框也应更改数组中的成绩。 关于如何做到这一点的任何想法。

更新:

好的,我看到代码现在多了一点,问题更加清楚了,并且需要使用其他方法。 我重写了您的代码。 看看这是否适合您:

Public Class frmGrades

    Public Class StudentGrade
        Public Name As String
        Public Grade As String
    End Class

    Private Score As List(Of StudentGrade) = New List(Of StudentGrade)

    Private Sub cmdApply_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdApply.Click

        AddStudent()

    End Sub

    Private Sub hsbStudent_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles hsbStudent.Scroll
        Update(hsbStudent.Value - 1) 'lists are zero-based
    End Sub

    Private Sub cmdFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFirst.Click
        Update(0)
    End Sub

    Private Sub cmdLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLast.Click
        Update(hsbStudent.Maximum - 1)
    End Sub
    Private Sub AddStudent()
        Dim nm As New StudentGrade
        nm.Name = txtStudent.Text
        nm.Grade = txtGrade.Text
        Score.Add(nm)

        hsbStudent.Minimum = 1
        hsbStudent.Maximum = Score.Count 
        hsbStudent.Value = Score.Count 

        txtGrade.Clear()
        txtStudent.Clear()
        txtStudent.Focus()
    End Sub
    Private Sub Update(i As Integer)
        txtStudent.Text = Score(i).Name
        txtGrade.Text = Score(i).Grade
    End Sub
    Private Sub CmdEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdEdit.Click

        Dim index As Integer = -1, cnt As Integer = 0

        For Each nm As StudentGrade In Score
            If nm.Name.ToLower = txtStudent.Text.ToLower Then
                index = cnt
                Exit For
            End If
            cnt += 1
        Next

        If index = -1 Then
            AddStudent()
        Else
            Score(index).Name = txtStudent.Text
            Score(index).Grade = txtGrade.Text
            hsbStudent.Value = index + 1
        End If

    End Sub

End Class

通过此代码,您可以扩展StudentGrade类以包含您需要存储的所有内容。 与字典相反,该列表也允许您使用索引值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM