Les RadioButtons ont une limitation. Il est possible de les jumelés seulement à l'intérieur d'un même conteneur (form, panel, groupBox, ...).
Puisque les programmeur avancer utilise souvent beaucoup les panel pour délimiter leur composant ou en utilisant des patron de conception, je propose donc une solution, assez simple, qui permet de régler ce problème.
C'est tout simplement une class qui va géré les évênements des RadioButtons au lieu de laisser .Net les géré de façon automatique.
Le code est très puissant, malgré sa simplicité, puisqu'il permet même de géré les radioButton qui se trouve sous 2 forms différentes
Source / Exemple :
'Création Waxime
Public Class GroupRadioExtend
'Collection qui gère les checkBox
Private Collection As New System.Collections.ArrayList
'Ajouter un checkBox
Public Sub Add(ByVal nouveau As RadioButton)
AddHandler nouveau.MouseDown, AddressOf modification 'Détecter les modifications
Collection.Add(nouveau)
End Sub
'Enlever un checkBox
'La collection gère automatiquement la suppression
Public Sub remove(ByVal old As RadioButton)
'Supression de l'évènement sur le bouton supprimé
RemoveHandler old.MouseDown, AddressOf modification
'On l'enlève de la collection
Collection.Remove(old)
End Sub
'On supprime tout les radioButtons
'Les évênements sont géré automatiquement
'C'est en quelques sorte un bug de .net,
'puisque les évênements auraient du être conservé
Public Sub removeAll()
Collection.Clear()
End Sub
'Une modification a été détecté
Private Sub modification(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
'Création d'un itérateur, voir mon tutorial sur les patrons
Dim iterator As System.Collections.IEnumerator = Collection.GetEnumerator
'On parcour l'itérateur et on décoche tout les RadioButtons
While iterator.MoveNext
iterator.Current.checked = False
End While
'Puis on coche le bon RadioButton
sender.checked = True
End Sub
End Class
Conclusion :
si vous avez des questions, n'hésité pas
chacune des couleur représente un panel, je voulais biens les définir pour bien montrer que chaque radionButton sont bel et bien sur des panneaux distincts
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.