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 :

utilisation des Textbox dans une boucle For


Sujet :

VB.NET

  1. #21
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Dans ce cas, la méthode avec le Panel fonctionnera très bien

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 680
    Points : 1 183
    Points
    1 183
    Par défaut
    Citation Envoyé par Gurdil le nain Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim machaine As String = ""
    For Each ctrl As Control In Me.Controls
        If TypeOf ctrl Is TextBox Then
             Dim textBox As TextBox = CType(ctrl, TextBox)
             machaine = textBox.Text
        End If
    Next
    Bonsoir,
    sauf erreur, tu testes si le contrôle est de type TextBox, puis tu tentes une conversion, celle ci me semble superflue (il y a peut être une raison, tu me le diras) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is TextBox Then
                    machaine = ctrl.Text
                End If
            Next
    et en condensé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For Each ctrl In Me.Controls.OfType(Of TextBox)()
                machaine = ctrl.Text
            Next
    Ensuite pour différencier les TextBox, si les Panels ne conviennent pas, il y a leur propriété Tag qui peut servir à stocker des données propres au contrôle ou à un groupe de contrôles :
    exemple :
    si ctrl.Tag = "groupe1" alors je traite sinon je ne traite pas ...
    Enfin ceci reste à tester.

  3. #23
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    La dernière méthode de compile pas chez moi. Mais en effet, le cast est inutile dans ce cas on l'on souhaite récupérer uniquement le texte.

  4. #24
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    C'est sans doute "TypeOf" au lieu de "Of"

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For Each ctrl In Me.Controls.OfType(TypeOf TextBox)()
                machaine = ctrl.Text
            Next

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 680
    Points : 1 183
    Points
    1 183
    Par défaut
    Citation Envoyé par Gurdil le nain Voir le message
    La dernière méthode ne compile pas chez moi.
    Bonsoir,

    bizarre
    Sous VS 2008 pro, fw 3.5 SP1, j'ai testé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim output1 As New System.Text.StringBuilder
            Dim query3 As IEnumerable(Of TextBox)
            query3 = Me.Controls.OfType(Of TextBox)().Where(Function(ctrl) ctrl.Tag.Equals("Groupe1") And Not ctrl.Tag.Equals(Nothing))
            For Each ctrl As TextBox In query3
                output1.AppendLine(ctrl.Text)
            Next
            MessageBox.Show(output1.ToString)
    Il me retourne bien les TextBox appartenant par leur Tag au "Groupe1".

  6. #26
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Points : 42
    Points
    42
    Par défaut
    Salut tout le monde ,
    je tiens à vous remercier pour votre aide et de m'avoir accorder votre temps. mais il me reste un tout petit problème
    Bon J'ai réussie à récupérer les valeurs de mes Textboxe en utilisant le code que vous m'avez proposer, j'ai fais quelques modifications bien sur :
    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
     
    Dim tab_coti(60) As String 'le tableau ou je dois stocké les valeurs des Textboxe 
    Dim Last As Integer = 0 ' une variable de teste 
    Dim i As Integer = 0 ' un simple compteur 
     
    For Each ctrl As Control In Me.form1.Controls
                If Last = 0 Then
                    If TypeOf ctrl Is TextBox Then
                        Dim ValBox As TextBox = CType(ctrl, TextBox)
                        If ValBox.Text = String.Empty Then ' si je rencontre un Textbox vide je sort de la boucle 
                            Last = 1
                            GoTo a
                        Else
                            machaine = ValBox.Text.ToString
                        End If
     
                        If i Mod 2 = 0 Then ' si le Textbox conteint l'année 
                            tab_coti(i) = machaine
                            i = i + 1
                        Else
                            tab_coti(i) = CDbl(machaine) ' si le Textbox contient le montant de cotisation  
                            i = i + 1
                        End If
     
                    End If
                End If
     
            Next
    Le problème qui se pose c'est que en utilisant cette méthode mon tableau et remplit de la manière suivantes : TB1->TB2->TB7->TB8->TB3-TB4......
    Moi je le veux de cette maniéré : TB1->TB2->TB3->TB4.....
    La forme de mes Textboxe est en miniature , j'attends vos réponses Merci
    Images attachées Images attachées  

  7. #27
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Euh alors là, une question :

    Pourquoi ne pas utiliser une dataGridView ?

  8. #28
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Gurdil le nain Voir le message
    Euh alors là, une question :

    Pourquoi ne pas utiliser une dataGridView ?
    Oui j'ai pensé à ça mais comme je débute sur Asp/vb.net j'ai réussie seulement a afficher les données de ma table avec une requête SELECT mais je vois pas comment faire pour l'insertion , si vous connaissez une simple méthode pour le faire ou quoi que ce soit qui peut m'aider je suis prenant .

  9. #29
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Citation Envoyé par zayoub Voir le message
    j'ai réussie seulement a afficher les données de ma table avec une requête SELECT mais je vois pas comment faire pour l'insertion , si vous connaissez une simple méthode pour le faire ou quoi que ce soit qui peut m'aider je suis prenant .
    Pour insérer des lignes sur la DGV ou en base ?

    Pour mettre une ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDGV.Rows.Add(val1, val2, val3, ...)
    Pour les récupérer :

    Pour une cellule en particulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDGV.Rows(n°Ligne).Cells(n°Colonne).Value

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 312
    Points : 411
    Points
    411
    Par défaut
    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
     
    Dim tab_coti(60) As String 'le tableau ou je dois stocké les valeurs des Textboxe 
    Dim Last As Integer = 0 ' une variable de teste 
    Dim i As Integer = 0 ' un simple compteur 
     
    For Each ctrl As Control In Me.form1.Controls
                If Last = 0 Then
                    If TypeOf ctrl Is TextBox Then
                        Dim ValBox As TextBox = CType(ctrl, TextBox)
                        If ValBox.Text = String.Empty Then ' si je rencontre un Textbox vide je sort de la boucle 
                            Last = 1
                            GoTo a
                        Else
                            machaine = ValBox.Text.ToString
                        End If
     
                        If i Mod 2 = 0 Then ' si le Textbox conteint l'année 
                            tab_coti(i) = machaine
                            i = i + 1
                        Else
                            tab_coti(i) = CDbl(machaine) ' si le Textbox contient le montant de cotisation  
                            i = i + 1
                        End If
     
                    End If
                End If
     
            Next

    Bon courage a celui qui devra reprendre ce code...

    Et surtout, les GOTO sont a bannir !

  11. #31
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 50
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Shadam Voir le message
    Pour insérer des lignes sur la DGV ou en base ?
    Je veux insérer dans une base de données les lignes de ma GridView

  12. #32
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Et bien tu récupères tes cellules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDGV.Rows(n°Ligne).Cells(n°Colonne).Value
    Puis tu les insères dans ta base de données avec une requête SQL.

Discussions similaires

  1. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 18h07
  2. Récupération des données dans une boucle for
    Par boubounagh dans le forum Interfaces Graphiques en Java
    Réponses: 22
    Dernier message: 24/10/2011, 17h29
  3. [PHP 5.3] Tester des conditions dans une boucle for
    Par coulane dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2010, 12h50
  4. Utiliser un pas dans une boucle For .. to .. do
    Par colorid dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2009, 12h09

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