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 :

Probleme avec utilisation de collection


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut Probleme avec utilisation de collection
    Bonsoir,

    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
     
     
    Dim InputGroupBox As New Collection
     
    Private Sub collections() Handles Button1.Click
     
            With InputGroupBox
                .Add(Mass_box.Controls)
                .Add(Geometry_box.Controls)
                .Add(Suspension_box.Controls)
                .Add(Steering_box.Controls)
            End With
     
    For Each tbox As Control In InputGroupBox 
                If TypeOf tbox Is TextBox Then
                    MessageBox.Show(tbox.Name)
                End If
            Next
     
        End Sub
    La procédure crash avant d'atteindre la 1ere messagebox.

    Il y a l'air d'y avoir un problème de conversion de type...avec ma collection InputGroupBox...

  2. #2
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    Hello,

    j'en conclu que Mass_box, Geometry_box, Suspension_box et Steering_box sont des textbox non?

    Si oui tu ne doit pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      With InputGroupBox
                .Add(Mass_box.Controls)
                .Add(Geometry_box.Controls)
                .Add(Suspension_box.Controls)
                .Add(Steering_box.Controls)
            End With
    Mais bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    With InputGroupBox
                .Add(Mass_box)
                .Add(Geometry_box)
                .Add(Suspension_box)
                .Add(Steering_box)
            End With
    De la manière que tu procédais, tu essayais d'ajouter la collection de contrôle contenu dans tes textbox, alors que tu veux seulement ajouter le textbox lui-même. L'affichage du nom des textbox fonctionne très bien si tu fait comme je t'ai montré.
    Permet moi de te donner un petit conseil. Dans Visual Studio, lorsque tu tape le nom d'une méthode ou d'un attribut tu as une description, et la description de .controls donne : Obtiens la collections de contrôles contenus dans le contrôle. Cela t'aurait rapidement aider à trouver la solution

    Voila, si tu as d'autre question n'hésite pas!

    Bonne chance

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 335
    Points : 111
    Points
    111
    Par défaut
    Non désolé, j'ai mal décrit mon problème.

    La collection InputGroupBox est composé de group boxs nommées Mass_box, Suspensions_box...
    Au sein des ces group boxs, il y a des text boxs. C'est à ces text boxs que je souhaite appliquer des traitements...

    La message box n'est là que pour vérifié que ma boucle sélectionne bien les text boxs.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Plusieurs chose :

    - Au lieu de mettre une messagebox pour débuggage pose un point d'arrêt sur ton button1.click, et avance en pas à pas pour voir où ça bloque.

    - Je ne sais pas si tu peux ajouter plusieux controls d'un coup comme tu le fait, je pense plutôt que tu dois les ajouter un par un

    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
     
    With InputGroupBox
         for each controleM as control in Mass_box.Controls
                .Add(controleM)
         next
         for each controleG as control in Geometry_box.Controls
                .Add(controleG)
         next
         for each controleS as control in Suspension_box.Controls
                .Add(controleS)
         next
         for each controleSt as control in Steering_box.Controls
                .Add(controleSt)
         next
    End With
    Peut être que le problème ne vient pas de là, mais en pas à pas tu en sauras plus sur ton problème

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 176
    Points : 25 118
    Points
    25 118
    Par défaut
    Citation Envoyé par Gualino Voir le message
    La procédure crash avant d'atteindre la 1ere messagebox.
    en cas d'erreur, .net va te donner le type d'erreur (invalidcastexception, outofrangeexception ...), un message d'erreur, et la ligne qui passe en erreur

    venir poster sans préciser tout ca est (pour rester poli) inutile
    soit les répondeurs passent leur chemin, soit ils tente de deviner et parfois tu n'auras que des réponses vagues ou incorrectes

    si ta collection est typée (ce qui semble être le cas) tu peux utiliser un system.collections.generic.list(of ) (list(of control) à priori dans ton cas)


    sinon concernant la devinette je pense que c'est :


    soit tu fais un addrange, soit tu modifies le for each, car en fait tu places une collection de controles (type controlcollection) et non tous les controles dans ta collection (ton for each as control plante, car ce n'est pas un control)

  6. #6
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    Hello,

    Je vais t'expliquer ton problème, et tu va comprendre comment faire toi-même.

    Tu as par exemple Mass_Box qui est un groupBox contenant des textBox.

    Tu ajoute LA COLLECTION de contrôles contenu dans Mass_Box dans une variable contenant une collection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim col as New Collection
    col.add(Mass_Box.controls)
    Donc col ne contient pas des contrôles, mais des collections de contrôles.

    Tu doit donc aller récupérer le nom des textBox dans des collections, qui sont dans une autre collection.

    Tu commence à comprendre?

    Je t'explique. Premièrement, notre variable 'col' est une collection qui contient les collections de contrôles de tes groupBox. Si on la parcours avec un for each, on a accès au collections de contrôles. Tu doit donc parcourir chaque collection dans ta collection. Ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       For Each Collection In col
                For Each Control As Control In Collection
                    MsgBox(Control.Name)
                Next
            Next
    Donc on regarde chaque controle dans chaque collection dans ta collection de base! Amen!

    Essaie comme ca, ca marche impec!

    Si ta pas compris gêne toi pas, j'reprendrai mes explications.

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 674
    Points : 1 176
    Points
    1 176
    Par défaut
    Bonsoir,
    comme le dit Pol ta collection est typée controls.
    A tester :
    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
            Dim InputGroupBox As New List(Of GroupBox)
            With InputGroupBox
                .Add(Me.GroupBox1)
                .Add(Me.GroupBox2)
            End With
     
            Dim InputTextbox As New List(Of TextBox)
            For Each grBox As GroupBox In InputGroupBox.OfType(Of GroupBox)()
                For Each crlTxt As Control In grBox.Controls
                    If (crlTxt Is TryCast(crlTxt, TextBox)) Then
                        InputTextbox.Add(CType(crlTxt, TextBox))
                        MessageBox.Show(grBox.Name & "." & crlTxt.Name)
                    End If
                Next
            Next

Discussions similaires

  1. [XML] Probleme avec utilisation Flux rss
    Par karouani dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 30/05/2012, 10h56
  2. Probleme avec utilisation de la class SWT Section
    Par L4BiN dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 26/06/2009, 16h37
  3. Probleme avec utilisation des filtres et des modeles
    Par Djolhan dans le forum Thunderbird
    Réponses: 0
    Dernier message: 08/04/2009, 22h30
  4. Problème avec l'utilisation de la commande system awk
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 05/10/2004, 16h18
  5. Probleme d'utilisation de directX 9 avec visual studio.net
    Par cranedoeuf dans le forum DirectX
    Réponses: 1
    Dernier message: 24/05/2004, 04h33

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