IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Limiter le nombre de checkbox cochés


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 335
    Points : 70
    Points
    70
    Par défaut Limiter le nombre de checkbox cochés
    Bonjour à tous,
    j'ai mis 12 checkbox dans un panel dans mon form et je voudrais empêcher l'utilisateur d'en cocher plus de 4.
    j'ai donc tapé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private Sub pnlecrit_CheckedChanged(sender As Object, e As EventArgs) Handles chkgeo.CheckedChanged, chkalle.CheckedChanged, chkange.CheckedChanged, chkastre.CheckedChanged, chkbio.CheckedChanged, chkespe.CheckedChanged, chkfr.CheckedChanged, chkgeo.CheckedChanged, chkgeol.CheckedChanged, chkhiste.CheckedChanged, chkmath.CheckedChanged, chkphilo.CheckedChanged, chkrussee.CheckedChanged
            Dim c As Integer
            If (sender.checked = True) Then
                c = c + 1
                If (c > 4) Then
                    MsgBox("Vous ne pouvez choisir que 4 matières à l'écrit au maximum", MsgBoxStyle.Critical)
                    sender.checked = False
                    c = 4
                End If
            End If
            If (sender.checked = False) Then
                c = c - 1
            End If
        End Sub
    Ni à la compilation, ni à l'exécution, il ne me produit d'erreur, mais j'ai beau cocher les 12 cases, il ne fait rien!

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Enlève l'instruction c=4. La décrémentation de c va s'effectuer quand on réentre dans la fonction suite à l'instruction sender.checked = False.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Ton code ne peut marcher que si tu déclare ta variable c en tant que variable globale pour qu'elle conserve sa valeur entre plusieurs évènements.

    L'autre solution serait de repasser systématiquement en revue les 12 checkbox pour en compter celles qui sont cochées (et non pas uniquement celle que tu viens de cocher, avec ton code)

    Par exemple en utilisant Linq sur la collection des contrôles du panel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub pnlecrit_CheckedChanged(sender As Object, e As EventArgs) Handles chkgeo.CheckedChanged, chkalle.CheckedChanged, chkange.CheckedChanged, chkastre.CheckedChanged, chkbio.CheckedChanged, chkespe.CheckedChanged, chkfr.CheckedChanged, chkgeo.CheckedChanged, chkgeol.CheckedChanged, chkhiste.CheckedChanged, chkmath.CheckedChanged, chkphilo.CheckedChanged, chkrussee.CheckedChanged
    	Dim c As Integer = 0
     
    	Dim chkBxs As IEnumerable = From c In Me.pnlecrit.Controls _
    			Where c.GetType.ToString = GetType(CheckBox).ToString
     
    	For Each chkBx As CheckBox In chkBxs
    		If chkBx.Checked then c = c+1
    	Next
     
    	If (c > 4) Then
    		MsgBox("Vous ne pouvez choisir que 4 matières à l'écrit au maximum", MsgBoxStyle.Critical)
    		sender.checked = False
    	End If
     
    End Sub
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 335
    Points : 70
    Points
    70
    Par défaut
    merci beaucoup ça marche maintenant!

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir,
    on peut également incrémenter ou décrémenter un compteur à chaque clic cochant ou décochant.
    Avec une variable c au niveau de la classe (variable membre), comme l'a dit sevyc64

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            If CType(sender, CheckBox).Checked Then c += 1 Else c = c - 1
     
            If c > 4 Then
                MsgBox("Vous ne pouvez choisir que 4 matières à l'écrit au maximum", MsgBoxStyle.Critical)
                CType(sender, CheckBox).Checked = False
            End If

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/06/2006, 17h30
  2. Compter le nombre de CheckBox cochées
    Par dj-julio dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/02/2006, 14h06
  3. fonction pour compter le nombre de checkbox coché ?
    Par Death83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/09/2005, 11h28
  4. nombre de checkbox cochés
    Par manaboko dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/05/2005, 15h39
  5. [débutant] obtenir le nombre de checkbox cochées
    Par macke_d dans le forum Composants
    Réponses: 3
    Dernier message: 30/03/2005, 02h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo