Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti sono nuovo e volevo dire che questo è proprio un bel forum,più volte ho risolto i miei problemi grazie a voi.Ora però non ho trovato soluzione in giro e allora mi sono deciso a registrarmi.Il mio problema come si legge dal titolo è riferito a un gruppo di radiobutton,io faccio così
Codice sorgente - presumibilmente VB.NET
PrivateSub radiobutton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles radiobutton1.CheckedChanged
Form2.Show()
EndSub
e tutto funziona bene,ma nel momento in cui clicco su un altro radio button mi si apre il form ke richiedo e poi sotto anche quello precedente.Spero di essermi spiegato bene e che qualcuno possa aiutarmi.
il problema sta nel fatto che tu leghi il radio button in questione ad un metodo tramite l'evento CheckedChanged. Questo evento viene scatenato ogni qualvolta il radiobutton cambia di stato, cioè sia quando viene selezionato (Checked = True), pallino nero, sia quando viene deselezionato (Checked = False) perchè ne hai selezionato uno diverso.
Quindi per risolvere c'è un modo che sta nel collegare l'evento CheckeChanged di tutti i radiobutton ad un unico metodo e verificare se l'oggetto chiamante, ossia il parametro sender, è effettivamente selezionato. Questo perchè l'evento viene scatenato 2 volte, prima dall'oggetto che viene deselezionato e poi da quello che viene invece selezionato, ossia i 2 che cambiano di stato. Infine verificato che un oggetto chiamante è selezionato basta controllare quale sia l'oggetto chiamante ^^
Dalla teoria ora passiamo alla pratica :
Codice sorgente - presumibilmente VB.NET
PrivateSub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles RadioButton1.CheckedChanged, RadioButton5.CheckedChanged, RadioButton4.CheckedChanged, RadioButton3.CheckedChanged, RadioButton2.CheckedChanged
Dim tmp As RadioButton = sender
If(tmp.Checked=True)Then
If(tmp.Name= RadioButton1.Name)Then
'operazioni in caso radiobutton1 selezionato
ElseIf(tmp.Name= RadioButton2.Name)Then
'operazioni in caso radiobutton2 selezionato
ElseIf(tmp.Name= RadioButton3.Name)Then
'operazioni in caso radiobutton3 selezionato
ElseIf(tmp.Name= RadioButton4.Name)Then
'operazioni in caso radiobutton4 selezionato
ElseIf(tmp.Name= RadioButton5.Name)Then
'operazioni in caso radiobutton5 selezionato
EndIf
EndIf
EndSub
nell'esempio che ho appena mostrato RadioButton1_CheckedChanged è il metodo che gestisce l'evento. Il primo If verifica se l'oggetto è selezionato, mentre la serie di If-ElseIf successivi determinare quale oggetto ha invocato il metodo. Nell'esempio sono presenti 5 RadioButton, rispettivamente RadioButton1 ... RadioButton5, ho tenuto i name di default.