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

ASP.NET Discussion :

[C#] Parcourir tous les TextBox d'un Panel


Sujet :

ASP.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut [C#] Parcourir tous les TextBox d'un Panel
    J'ai un Panel qui contient que des TextBox et j'ai besoin de tous les parcourir.

    Or j'ai utilisé ceci pour les parcourir, et j'ai une exception d'erreur de cast.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach(TextBox a in Panel1.Controls)
    {
    }
    Et j'ai aussi essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach(WebControl a in Panel1.Controls)
    {
    }
    Voici mon exception
    Le cast spécifié n'est pas valide.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.InvalidCastException: Le cast spécifié n'est pas valide.
    Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    En c# tu peux faire comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach(Control c in tonpanel.Controls)
    {
    if(c.GetType() == typeof(TextBox))
    }

  3. #3
    Inscrit Avatar de bilb0t
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    378
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 378
    Points : 283
    Points
    283
    Par défaut
    C'est parce que tu essayes de caster tout les control de ton panel en textBox. Il faudrait vérifier que ton control est un textbox avant de le caster.

    exemple (à tester):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach(Control c in Panels.Controls)
    {
      if(c.GetType() == typeof(TextBox)) //vérifier le casting
      {
         TextBox tb = (TextBox)c; //casting effectif
          tb.Text = "Bilb0t est vraiment super !";
      }
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 29
    Points
    29
    Par défaut
    Aux amis rédacteurs de developpez.com DotNet

    Cette question du bouclage sur les controles revient, sous une forme ou une autre, en VB.NEt ou en C#, environ 1 à 2 fois par semaine.

    Peut-être pourriez-vous envisager de rédiger un article sur ce sujet.
    Merci

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Merci

    Mais j'ai un autre problème. Mes textbox sont dans un HtmlTable, et quand il parcourt le foreach il ne rentre pas dans mon htmltable.

    Comment faire pour qu'il parcourt automatique tout les autres sous groupes ? Et ainsi de suite ?

  6. #6
    Inscrit Avatar de bilb0t
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    378
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 378
    Points : 283
    Points
    283
    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
    //ds le page_Load (ou tu veux)
    ...
    foreach(Control c in Panels.Controls)
    {
      modifytextBox(c);
    }
    ...
     
    //la méthode récursive
    void modifytextBox(Control c)
    {
      foreach(Control c1 in c.Controls)
        modifytextBox(c1)
     
      if(c.GetType() == typeof(TextBox)) //vérifier le casting
      {
         TextBox tb = (TextBox)c; //casting effectif
          tb.Text = "Bilb0t est vraiment super !";
      }
    }

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Merci beaucoup ça marche

    Mais voici une petite optimisation de ton appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modifytextBox(monPanel.Controls);
    Pas besoin de l'appeler dans un foreach.

  8. #8
    Inscrit Avatar de bilb0t
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    378
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 378
    Points : 283
    Points
    283
    Par défaut
    Bien vu.

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

Discussions similaires

  1. parcourir tous les textbox d'une form
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 23/09/2008, 12h28
  2. [Applet] Parcourir tous les fichiers d'une URL
    Par Frac10 dans le forum Applets
    Réponses: 20
    Dernier message: 01/05/2006, 23h59
  3. [VB.NET][2.0]retirer en une fois tous les objets d'un panel
    Par Golzinne dans le forum Windows Forms
    Réponses: 5
    Dernier message: 14/03/2006, 15h06

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