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 :

Collection, CheckedBoxes, valeurs .Text dans Text.box


Sujet :

VB.NET

  1. #1
    Membre confirmé Avatar de trouthy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut Collection, CheckedBoxes, valeurs .Text dans Text.box
    Bonjour,

    Déjà plusieurs jours que je tente de m'en sortir: sur un form2 Vb qui possède plusieurs check boxes, après avoir coché celles qui conviennent et les avoir ajoutées a une collection "Ensemble" je ne parviens pas une fois terminée la saisie qui correspond à la première checkedbox faire afficher la valeur .text de la suivante checkedbox dans une text.box ou bien un label.text! Merci Bcp. Trouthie

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Avec un extrait de code ... peut-être ...
    Et quelques explications quels liens y a-t-il entre ton 2ème Form et le 1er ?
    ...

  3. #3
    Membre confirmé Avatar de trouthy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Les check box sont dans le form1, l'utilisateur sélectionne celles qui l'intéresse clique sur un bouton "validez" qui ouvre le form2 dans lequel un champ permet pour chaque checkedbox de saisir une valeur par un autre bouton "validez", un TxtBoxSectionCable.Text reprend la valeur de la checkedbox du form1 en affichant son champ texte, ensuite on saisit les valeurs pour la deuxième checkedbox du Form1 etc... OK?
    Voici l'extrait de code situé dans le Form2.Designer.vb qui fonctionne. Ensuite je ne parviens pas à faire attribuer à TxtBoxSectionCable.Text la valeur de la Form1.CheckedBox suivante qui est checked! J'ai créé une collection...voir second extrait de code lequel fonctionne également!

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
            ' renseigne la section du câble dans la textbox du form2
            If Form1.CheckBox1.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox1.Text
            ElseIf Form1.CheckBox2.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox2.Text
            ElseIf Form1.CheckBox3.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox3.Text
            ElseIf Form1.CheckBox4.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox4.Text
            ElseIf Form1.CheckBox5.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox5.Text
            ElseIf Form1.CheckBox6.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox6.Text
            ElseIf Form1.CheckBox7.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox7.Text
            ElseIf Form1.CheckBox8.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox8.Text
            ElseIf Form1.CheckBox9.Checked = True Then
                TxtBoxSectionCable.Text = Form1.CheckBox9.Text
            End If
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
        End Sub
     
    If Form1.CheckBox1.Checked = True Then
                Ensemble.Add(Form1.CheckBox1)
                If Form1.CheckBox2.Checked = True Then
                    Ensemble.Add(Form1.CheckBox2)
                    If Form1.CheckBox3.Checked = True Then
                        Ensemble.Add(Form1.CheckBox3)
                        If Form1.CheckBox4.Checked = True Then
                            Ensemble.Add(Form1.CheckBox4)
                            If Form1.CheckBox5.Checked = True Then
                                Ensemble.Add(Form1.CheckBox5)
                                If Form1.CheckBox6.Checked = True Then
                                    Ensemble.Add(Form1.CheckBox6)
                                    If Form1.CheckBox7.Checked = True Then
                                        Ensemble.Add(Form1.CheckBox7)
                                        If Form1.CheckBox8.Checked = True Then
                                            Ensemble.Add(Form1.CheckBox8)
                                            If Form1.CheckBox9.Checked = True Then
                                                Ensemble.Add(Form1.CheckBox9)
                                            End If
                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ton premier bloc de If ne peut tirer qu'un seul CheckBox coché, le premier trouvé en allant de 1 à 9, parce que c'est une "cascade" de If, une suite de If ... ElseIf ... . Ainsi on peut relancer ce bloc autant de fois qu'on veut, il ne mettra dans le TextBox que le premier CheckBox trouvé.
    Si tu écris une "suite" de If (sans Else) il ne mettra dans le TextBox que le dernier CheckBox trouvé.
    Maintenant, que souhaiter d'autre ?, le TextBox ne peut présenter qu'un seul CheckBox !
    N'aurais-tu pas la possibilité de remplacer le TextBox par un ListBox ? Cela te permettrait de percevoir les différents fonctionnements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' ...
            ListBox1.Items.Clear()
            If Form1.CheckBox1.Checked = True Then ListBox1.Items.Add(Form1.CheckBox1.Text)
            If Form1.CheckBox2.Checked = True Then ListBox1.Items.Add(Form1.CheckBox2.Text)
            If Form1.CheckBox3.Checked = True Then ListBox1.Items.Add(Form1.CheckBox3.Text)
            If Form1.CheckBox4.Checked = True Then ListBox1.Items.Add(Form1.CheckBox4.Text)
            If Form1.CheckBox5.Checked = True Then ListBox1.Items.Add(Form1.CheckBox5.Text)
    .............
    et après mise en commentaire du code précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ' ...
            ListBox1.Items.Clear()
    If Form1.CheckBox1.Checked = True Then
       ListBox1.Items.Add(Form1.CheckBox1.Text)
    ElseIf Form1.CheckBox2.Checked = True Then
       ListBox1.Items.Add(Form1.CheckBox2.Text)
    ElseIf Form1.CheckBox3.Checked = True Then
       ListBox1.Items.Add(Form1.CheckBox3.Text)
    .............
    ...

  5. #5
    Membre confirmé Avatar de trouthy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Bien évidemment, en fait le click du bouton validez qui est placé sur le Form2 doit faire avancer l'index de 1 pour afficher la valeur text de la suivante CheckedBox qui a été ajoutée à la collection Ensemble!

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bien, mais la structure de If que tu utilises pour remplir ta collection arrête le remplissage de la collection dès que se présente un CheckBox non Checked. Si CheckBox1 n'est pas coché, ta collection ne reçoit aucune info, même si tous les autres CheckBox sont cochés.

    Je pense que tu devrais faire le test avec une ListBox (comme je te le suggérais hier), tu te rendrais mieux compte des résultats produits par ces codes. En Checkant les CheckBox 3 et 5 seulement, et en exécutant en pas à pas (<F10>), tu devrais détecter des anomalies par rapport au résultat que tu souhaites.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    If Form1.CheckBox1.Checked = True Then
                Ensemble.Add(Form1.CheckBox1)
                If Form1.CheckBox2.Checked = True Then
                    Ensemble.Add(Form1.CheckBox2)
                    If Form1.CheckBox3.Checked = True Then
                        Ensemble.Add(Form1.CheckBox3)
                        If Form1.CheckBox4.Checked = True Then
                            Ensemble.Add(Form1.CheckBox4)
                            If Form1.CheckBox5.Checked = True Then
    ....................

  7. #7
    Membre confirmé Avatar de trouthy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    L'algo et moi c'est une longue histoire...je vais suivre vos conseils, merci. Je vous dirais!

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    OK, merci.
    A bientôt,

  9. #9
    Membre confirmé Avatar de trouthy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Eh ouai, il faut entrer dans la boucle! Le champ texte des checkedboxes de la collection, il s'affiche dans une MsgBox qui est dans une boucle for next, pour le moment!

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bravo !

    Une idée de boucle, peut-être ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            Dim Collection(10) As CheckBox
            Dim i As Integer
            For Each C As Object In Form1.Controls  '' Attention, le 1er dans Collection ne sera pas forcément le 1er du Form
                Try
                    If C.Checked Then
                        Collection(i) = C
                        ''   MessageBox.Show(Collection(i).Name)  '' pour test uniquement  :D)))
                        i += 1
                    End If
                Catch
                End Try
            Next

  11. #11
    Membre confirmé Avatar de trouthy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    L'extrait de code fonctionne. Un tuto sur la découverte des événements en VB.Net est disponible en téléchargement, je m'y intéresse afin d'intégrer une classe à mon projet! A plus.

  12. #12
    Membre confirmé Avatar de trouthy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Ensuite j'utilise l'événement Click du bouton pour parcourir la collection en incrémentant l'index à chaque click!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MaRoutine() Handles Btn1_Validez.Click 'La procédure ma routine est exécutée par l'événement click du Bouton
            MsgBox("Il est possible d'exécuter une routine depuis l'événement click d'un bouton")
            Cpt1 += 1
            MsgBox("Valeur de Cpt1 après le click:" & Cpt1)
        End Sub

  13. #13
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Tu n'es pas obligé de sortir ce code de la procédure événementielle du bouton. Par ailleurs, ta tentative de placer un événement sur MaRoutine n'est pas correcte. Si tu veux vraiment exécuter MaRoutine(), il suffit de l'appeler dans la procédure événementielle du bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Private Sub NomDeMonBouton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NomDeMonBouton.Click
         MaRoutine()
         ' ... ... ...
    Si joint le fichier MultiCheckBox.zip qui contient tout le dossier de développement un programme de tests en rapport avec ton projet.
    Tu verras comment je répond aux Click des boutons, pour remplir Collection d'une part, pour afficher dans un TextBox les textes des CheckBox Checked.
    Ces exemples te seront certainement utiles.

    Bon amusement,

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/12/2014, 21h07
  2. Réponses: 6
    Dernier message: 08/11/2014, 11h56
  3. Réponses: 6
    Dernier message: 14/02/2006, 20h53
  4. Réponses: 4
    Dernier message: 01/12/2005, 23h13
  5. [c#][Pocket PC]Saisie dans text box
    Par maredami dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/11/2005, 11h24

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