2016-09-15 10 views
0

このプログラムは、有効な投票者候補を受け入れ、テキストボックスに入力した名前をリストボックスに追加することになっています。リストボックスで、ユーザーは選択した候補をダブルクリックすることができます。集計ボタンをクリックすると、候補者の名前と票を表示するリストボックスが他のリストボックスの横に表示されます。なぜ1つの結果しか表示されないのですか

私の問題は、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 
+0

問題は、あなたが 'lstCandidates'を通して' iterating'していないことです。また、あなたがやっていることでインデックスを使った信頼性がない場合は、あなたの候補について_CandidateID_のような識別子を持たなければなりません。 –

+0

私はiterating throuhg lstCandidatesを試してみました。そして最後にクリックされた候補が投票数に反復して返されました。 –

+0

候補とその投票の指標は同じですか? –

答えて

0

です:候補のインデックスを想定し

をし、彼/彼女の投票は同じです:

Private Sub btnTally_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnTally.Click 
    lstTallies.Visible = True 
    lblTally.Visible = True 
    For i = 0 To lstCandidates.Items.Count - 1 
     lstTallies.Items.Add(lstCandidates.Items(i).ToString & " - " & votes(i)) 
    Next 
    End Sub 

あなたが内容を取得することはできませんあなたがiterateを除いてListBox

+0

それはうまく動作します!ありがとう!今、私は勝者(s ')の名前を画像ボックスに表示する必要があります。私はこれでどこから始めるべきかわかりません。 –

+0

それは別の話です。あなたが結果を提示する方法の詳細を含む別の質問をしっかりと掲示してください。できれば私はそれに答えるつもりです。 –

+0

私はそれを投稿しました –

関連する問題