In questo esempio puoi vedere se la cosa ti si snellisce un po.
Crei una sub "Risposta" dove esegui i controlli di vero , falso.
Quando clicchi il button invii la chiamata alla sub "Risposta" inviado il numero del button premuto, così ti eviti poi di fare l'IF di controllo.
Volendo puoi eliminare il button e inviare la chiamata a "Risposta" direttamente da ogni Radiobutton .
Questa è la prima cosa che mi è venuta in mente per far girare meglio ilò tuo programma
con Selectcase semplifichi le funzioni IF
Quello che mi mette il dubbio è il tuo popolare l' "index" all'interno della verifica
codice:
(Questions.Item(index + 16 ).RValore.ToString = "V")
dovresti incrementarlo al di fuori .
codice:
index +=1
(Questions.Item(index ).RValore.ToString = "V")
Non ti ho postato l'esatta soluzione ma se con l'esempio ci arrivi da solo è meglio
Magari ti danno suggerimenti migliori e meglio scritti.
codice:
Public Class Form1
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
End Sub
Private Sub Risposta(ByVal Check As Integer)
' sub cove controlli le risposte in base al radiobutton premuto
Select Case Check
Case "1"
Select Case (Questions.Item(index).RValore.ToString)
Case "V"
punti += 1
lblscore.text += 1
index += 1 'incrementi l'index se va cambiato ad ogni risposta altrimenti lo incrementi alla fine di questa sub al di fuori del Select Case
Case "F"
textbox1.text = "Hai Sbagliato"
index += 1 'incrementi l'index se va cambiato ad ogni risposta anche se errata altrimenti lo incrementi alla fine di questa sub al di fuori del Select Case
End Select
Case "2"
Select Case (Questions.Item(index).RValore.ToString)
Case "V"
punti += 1
lblscore.text += 1
index += 1 'incrementi l'index se va cambiato ad ogni risposta altrimenti lo incrementi alla fine di questa sub al di fuori del Select Case
Case "F"
textbox1.text = "Hai Sbagliato"
index += 1 'incrementi l'index se va cambiato ad ogni risposta anche se errata altrimenti lo incrementi alla fine di questa sub al di fuori del Select Case
End Select
Case "3"
Select Case (Questions.Item(index).RValore.ToString)
Case "V"
punti += 1
lblscore.text += 1
index += 1 'incrementi l'index se va cambiato ad ogni risposta altrimenti lo incrementi alla fine di questa sub al di fuori del Select Case
Case "F"
label1.text = "Hai Sbagliato"
index += 1 'incrementi l'index se serve ad ogni risposta anche se errata altrimenti esci dalla funzione
Exit Sub
End Select
End Select
MsgBox(Check)
End Sub
Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
End Sub
Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public Sub New()
' Chiamata richiesta dalla finestra di progettazione.
InitializeComponent()
RadioButton1.Checked = False
RadioButton2.Checked = False
RadioButton3.Checked = False
'nessun radiobutton premuto all'avvio dell'applicazione
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If RadioButton1.Checked = True Then
Risposta("1")
ElseIf RadioButton2.Checked = True Then
Risposta("2")
ElseIf RadioButton3.Checked = True Then
Risposta("3")
End If
'richiami la sub Risposta dando il valore a check in base al radiobutton premuto
End Sub
End Class