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

Windows Forms Discussion :

Initialiser plusieurs champs en 1 fois


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut Initialiser plusieurs champs en 1 fois
    Salut,

    Bon, un truc simple que j'arrive pas à réaliser :

    J'ai une série de textbox dans un tabcontrol qui contient plusieurs pages. Ceux-ci sont initialisés avec des valeurs par défaut.

    Je voudrais modifier la valeur de propriétés lorsque je fais une certaine tache.

    Plutôt que de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.champ1.Readonly = True
    Me.champ2.readonly = True
    ...
    Je crois que l'on peut faire ça avec la boucle for each, mais je vois pas comment initialiser les contrôles.

    Comment faites-vous ?

    Merci par avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 61

  3. #3
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut
    Ok, merci, j'avance.

    Mais j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim tb As TextBox
     
            For Each tb As Control In Me.Controls
                tb.BackColor = Color.White
            Next
    J'ai le message :

    La variable 'tb' masque une variable dans un bloc englobant.
    Pourquoi ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Par défaut
    essai avec mais je pense que tu devrai mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for each tb in me.tabcontrol

  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par esoso Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim tb As TextBox
     
            For Each tb As Control In Me.Controls
                tb.BackColor = Color.White
            Next
    Tu as ce message car tu déclares une variable tb de type TextBox et juste après, dans ton foreach, tu dis que tb est en fait de type Control...

    Tu devrais suivre de plus près le code se trouvant sur le lien que te donne balabonov :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each tb As Control In Me.Controls
                If tb.GetType Is GetType(TextBox) Then
                    ' traitement sur la textbox courante...
                End If
    Next
    Sauf que dans ce cas, tu ne parcours que les contrôles au niveau 0 de ta form.
    Les controles d'une form sont hiérarchisés sous forme d'arbre. Donc, qui dit parcours d'arbre, dit... ?

  6. #6
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut
    Merci pour vos réponses, mais, j'ai cherché , et je trouve pas .

    Je ne vois pas... :

    Donc, qui dit parcours d'arbre, dit... ?
    J'ai essayé plusieurs méthodes. En fait, dans celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Dim c As Control
     
            For Each c In Me.TabContact.Controls
                If (TypeOf (c) Is TextBox) Then
                    c.BackColor = Color.White
                End If
    Je n'ai plus ma propriété ReadOnly.

    J'ai eu beau regardé dans le forum, et sur le topic donné, mais ...

    Help !

  7. #7
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Il faut caster c en textbox pour avoir accés au Readonly :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each c In Me.TabContact.Controls
       If (TypeOf (c) Is TextBox) Then
          dim tb as texbox = ctype(c, textbox)
          tb.BackColor = Color.White
          tb.readonly = true
       End If
    Next
    Et, qui dit arbre dit traitement récursif.

    Cdt et bonne fête.

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

Discussions similaires

  1. [WD-2010] Modifier plusieurs champs en une seule fois
    Par Sebc1686 dans le forum Word
    Réponses: 5
    Dernier message: 12/03/2013, 09h44
  2. [XL-2007] MAJ d'un champ de plusieurs TCD en 1 fois
    Par Bred31 dans le forum Excel
    Réponses: 1
    Dernier message: 24/08/2010, 14h26
  3. [1.x] Modification de plusieurs champs à la fois
    Par SansPseudo dans le forum Symfony
    Réponses: 2
    Dernier message: 20/07/2007, 14h31
  4. Réponses: 3
    Dernier message: 21/01/2007, 10h40

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