Group checkbox

mayssa_kh3 Messages postés 28 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 2 juin 2006 - 15 mai 2006 à 15:51
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 - 23 mai 2006 à 02:06
bonjour
je vais parler de mon probleme .
j'ai 6 checkbox sur une form.je veux realiser l'operation suivante:si je coche 4 parmi eux les deux autres seront desactivé automatiquement jusque la c faisable .
Mais si je decoche une parmi les quatres cochés les checkbox desactivés reviennent actif?
comment feari-je?
merci d'avance!!

4 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2006 à 16:01
Salut,

Il suffit de faire un test sur tout tes checkbox activés pour verifier si ils sont tous cochés:

1- si ils sont tous cochés alors les deux derniers sont inactifs (enable = False)
2- si ils ne sont pas tous cochés alors les deux derniers sont actifs (enable = True)

En supposant que tu aies un groupe de checkbox appelé choix avec les index allant de 0 à 5

essaie le code suivant.


Private Sub Choix_Click(Index As Integer)
Dim i As Integer
Dim TousCocher As Boolean
TousCocher = True
For i = 0 To 3
If Choix(i).Value = 0 Then
TousCocher = False
Exit For
End If
Next i

Choix(4).Enabled = Not TousCocher
Choix(5).Enabled = Not TousCocher
End Sub


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


Ce n est pas tres optimisé mais ca donne une idée

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
15 mai 2006 à 16:03
Re,

essaie d'adapté car je n'avais pas vu que c'était du .net (Va falloir que je fasse attention a ce nouvelle version du forum)...

Excuse.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
NHenry Messages postés 15116 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 9 mai 2024 159
15 mai 2006 à 16:38
Bonjour

Doublon avec : http://www.vbfrance.com/infomsg_CHECKBOX_739276.aspx
évite de faire un rafraichissement quand tu créé un sujet, c'est déroutant, on ne sait plus où répondre.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
23 mai 2006 à 02:06
Avec le DotNet il n'est plus possible de faire des tableau de controle comme en vb6. :( Domage. Toutefois il est possible de redirigé toute ( ou presque) les Handles des évènemenr de différant controle vers une seule procédure. Cool

Moi ce que je te suggère c'est de créé une variable nChked as integer qui va contenir le nombre de check box qui son coché
faire un tableau qui vas contenir tous les checkbox et de regiriger tout les évènement CheckedChanged ver une meme procédure

sa donne a peu près sa

Public Class Form1
    Public ChkBox(5) As CheckBox
    Dim nChked As Integer
   
Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

        ChkBox(0) = CheckBox1
        ChkBox(1) = CheckBox2
        ChkBox(2) = CheckBox3
        ChkBox(3) = CheckBox4
        ChkBox(4) = CheckBox5
        ChkBox(5) = CheckBox6

        For i As Integer = 0 To 5
            AddHandler ChkBox(i).CheckedChanged, AddressOf Me.ChkBox_ChkChange
        Next
   End Sub

    Private Sub ChkBox_ChkChange(ByVal sender As Object, ByVal e As System.EventArgs)
        If sender.ToString.EndsWith("0") Then
            nChked -= 1
        Else
            nChked += 1
        End If

        If nChked = 4 Then
            For i As Integer = 0 To 5                If ChkBox(i).Checked False Then ChkBox(i).Enabled False
            Next
        ElseIf nChked = 3 Then
            For i As Integer = 0 To 5                If ChkBox(i).Enabled False Then ChkBox(i).Enabled True
            Next
        End If
    End Sub

End Class

Bonne chance
0
Rejoignez-nous