Radiobutton en .net sur plusieurs conteneurs différents

Soyez le premier à donner votre avis sur cette source.

Vue 14 862 fois - Téléchargée 699 fois

Description

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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
97
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
1
Excellente contribution, simple et efficace
Messages postés
1
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
22 janvier 2008

ok
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
5
merci, ça fait plaisir d'aider
Messages postés
10
Date d'inscription
dimanche 17 septembre 2006
Statut
Membre
Dernière intervention
24 janvier 2007

Bravo DRAGON pour cette source bien utile ET qui fonctionne parfaitement.
BYE.
Messages postés
2336
Date d'inscription
samedi 14 juillet 2001
Statut
Membre
Dernière intervention
5 mai 2009
5
c'est juste que c'est hors sujet.
j'ai fait une siource, juste sur l'itérateur, la conversation devrait plutot être là et non ici.

j'ai rien contre les commentaires, sauf quand c'est hors sujet et quand le niveau des commentaire est de loin le niveau de la source. ça fait fuir les débutant ce genre de commentaire
Afficher les 17 commentaires

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.