Wie kann ich die Hintergrundfarbe einer Schaltfläche, um die Farbe zu ändern, wenn es enthält die richtige Antwort? Visual Basic 2010
Habe ich einen multiple-choice-quiz, aber bin kämpfen mit kommen mit den richtigen code, um es so zu machen, dass, wenn der Spieler wählt die Schaltfläche, die die richtige Antwort, seine Hintergrundfarbe zu grün für ein paar Sekunden, bevor die nächste Frage erscheint automatisch und kehrt zu seiner normalen BackColor.
Auch, wenn der Spieler wählt die Schaltfläche, für die falsche Antwort, dann seine Hintergrundfarbe auf rot zu etablieren, um die Spieler, dass Sie falsch waren.
Dafür habe ich eine label
genannt lblQuestion
enthalten, in dem die Frage gestellt und dann vier buttons
(btnAnswerA
, btnAnswerB
, btnAnswerC
und btnAnswerD
), die alle enthalten eine mögliche Antwort auf die Frage,, mit natürlich nur eine richtig ist.
Ich habe schon hantieren mit dem code für irgendwann, die versuchen, um es zu arbeiten, aber es funktioniert nicht wie ich will, also Gedanken zu kommen, die hier für einige Hinweise in dieser Angelegenheit.
Nachfolgend finden Sie einige der code in Bezug auf dieses Problem. Ich bin sicher, dass es bei der Suche, viele von Ihnen wissen, wohin ich gehe falsch!
Private Sub btnAnswerA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnswerA.Click
If strAnswer = "A" Then
btnAnswerA.BackColor = Color.Green
intScore = intScore + 100
lblScore.Text = intScore
Else
btnAnswerA.BackColor = Color.Red
Call GetQuestion(questionNumber)
End If
Call GetQuestion(questionNumber)
prgbarOne.Value = 0
End Sub
Private Sub btnAnswerB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnswerB.Click
If strAnswer = "B" Then
btnAnswerB.BackColor = Color.Green
intScore = intScore + 100
lblScore.Text = intScore
Else
btnAnswerB.BackColor = Color.Red
Call GetQuestion(questionNumber)
End If
Call GetQuestion(questionNumber)
prgbarOne.Value = 0
End Sub
Private Sub btnAnswerC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnswerC.Click
If strAnswer = "C" Then
btnAnswerC.BackColor = Color.Green
intScore = intScore + 100
lblScore.Text = intScore
Else
btnAnswerC.BackColor = Color.Red
Call GetQuestion(questionNumber)
End If
Call GetQuestion(questionNumber)
prgbarOne.Value = 0
End Sub
Private Sub btnAnswerD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnswerD.Click
If strAnswer = "D" Then
btnAnswerD.BackColor = Color.Green
intScore = intScore + 100
lblScore.Text = intScore
Else
btnAnswerD.BackColor = Color.Red
Call GetQuestion(questionNumber)
End If
Call GetQuestion(questionNumber)
prgbarOne.Value = 0
End Sub
Im Grunde, ich brauche nur etwas Hilfe mit dem wissen, wie man die BackColor-grün/rot (je nachdem, ob Sie richtig oder falsch ist) für ein paar Momente, Ehe er die nächste Frage, wo Call GetQuestion(questionNumber)
ist und zu wissen, wie man die original-Hintergrundfarbe (Grau) zurück für die nächste Frage, bevor der Spieler klickt auf einen button.
Hoffe, das macht Sinn und jede Hilfe wird wirklich geschätzt. Ich bitte um Entschuldigung, ich bin noch neu in der Programmierung (wie Sie sagen). Auch, wenn mehr code benötigt wird, werde ich es abschicken.
InformationsquelleAutor KSR5 | 2013-08-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als APrough hingewiesen hat, können Sie die Thread.Schlafen Methode Recht vor jeder der
Call GetQuestion(questionNumber)
.Können Sie die
millisecondsTimeout
parameter stellt die Anzahl der Millisekunden, für die der thread blockiert ist. Zum Beispiel zum schlafen für 2 Sekunden:Aber,
Den Grund, dass das Verhalten erklärt sich auf der MSDN-Website über die - Anwendung.DoEvents Methode, , dass ist auch die Lösung:
Es ist das, was für Sie geschehen, die backcolor ist nicht aktualisiert, da ich denke, das zurücksetzen der Hintergrundfarbe in der
GetQuestion
Methode. Also, was Sie brauchen, ist zum aufrufen dieser Methode (Application.DoEvents
) vor derThread.Sleep
Methode.Dein code wäre:
InformationsquelleAutor Chris
Setzen in
Recht vor jeder der Call GetQuestion(questionNumber). Die über 1000 Millisekunden ist, so einstellen, wie Sie benötigen.
InformationsquelleAutor APrough
Tun, eine Google-Suche nach vb.net timer-Steuerelement. Starten Sie einen timer, nachdem Sie klicken Sie auf die Schaltfläche und Griff es .Tick () - Ereignis zum zurücksetzen des BG Farben von Schaltflächen sowie start der nächsten Frage. Auf diese Weise wird sichergestellt, dass die Anwendung nicht mehr reagiert und wird ordnungsgemäß übergang.
InformationsquelleAutor Nicholas Post