Эта программа должна принимать действительные кандидаты для голосования, добавлять имена, введенные в текстовое поле, в список. В поле списка пользователь может дважды щелкнуть по выбранному кандидату. После нажатия кнопки подсчета появится окно со списком имен кандидатов и голосов, которые будут отображаться рядом с другим списком.Почему он отображает только один результат?
Моя проблема в том, что lstTallies отображает только последнего проголосовавшего кандидата. Ниже мой код
Public Class Form1
Dim maxVotes As Integer
Dim winner As String
Dim votes() As Integer
Dim index As Integer
Dim candidates As String
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
If Not isValidInput(txtNewCandidate.Text) Then
Exit Sub
End If
lstCandidates.Items.Add(txtNewCandidate.Text)
txtNewCandidate.Clear()
txtNewCandidate.Focus()
ReDim Preserve votes(index)
index += 1
End Sub
Private Function isValidInput(ByRef firstName As String) As Boolean
If IsNumeric(txtNewCandidate.Text) Or txtNewCandidate.Text = "" Then
MsgBox("Please input a valid candidate name.")
txtNewCandidate.Focus()
Return False
Else
Return True
End If
End Function
Private Sub btnTally_Click(sender As Object, e As EventArgs) Handles btnTally.Click
lstTallies.Visible = True
lblTally.Visible = True
lstTallies.Items.Add(lstCandidates.Text & " " & votes(lstCandidates.SelectedIndex))
End Sub
Private Sub lstCandidates_DoubleClick(sender As Object, e As EventArgs) Handles lstCandidates.DoubleClick
If lstCandidates.SelectedIndex = -1 Then
MsgBox("Select a candidate by double-clicking")
End If
votes(lstCandidates.SelectedIndex) += 1
MsgBox("Vote Tallied")
End Sub
End Class
Проблема в том, что вы не 'итерируете' через' lstCandidates'. Также просто совет, используя индекс, не является надежным в том, что вы делаете, у вас должен быть какой-то идентификатор типа _CandidateID_ для ваших кандидатов. –
Я пробовал итерацию с горсткой lstCandidates, и он вернул последнего нажатого кандидата, повторенного до количества голосов. –
Индекс кандидата и его/ее голос одинаковы? –