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

C# Discussion :

Variable variable quel est la bonne syntaxe ?


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut Variable variable quel est la bonne syntaxe ?
    Bonjour et à l'aide !

    Je sais pas si mon titre veut vraiment dire quelque chose, mais vous allez comprendre ^^ :

    Je me lance le développement d'application sur windows phone, ma page possède plusieurs textbox qui comprenne des jolis nom comme : "categorie1", "categorie2", "categorie3", etc etc

    A un moment je dois modifier toutes ces textbox depuis du c#, et j'aurai voulu pouvoir affecter une variable dont le nom de cette variable dépend d'une autre, je sais qu'en PHP on peut faire comme ca :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $index = "2";
    $chaine2 = "voici une chaine stockée dans chaine2";
     
    $resultat = ${"chaine".$index};
     
    echo $resultat;
    // affiche : "voici une chaine stockée dans chaine2"

    Mais du coup en c# comment faire ?

    Sachant que mon autre soucis c'est que je dois modifier la méthode .Text de ces textbox et à chaque fois du coup c'est encore plus compliqué, j'aimerai faire quelque chose comme :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int i = 0;
     
    while (i < n)
    {
    categorie+i+.Text = "la modification a apporter"; // <= ligne totalement incorrect
    i++;
    }

    Mais rien à faire, je ne trouve pas

    En cherchant, apriori ma solution serait d'utiliser les dictionnary Mais en lisant la doc j'ai beaucoup de mal à comprendre comment les utiliser dans mon cas

    Merci pour votre aide !

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Supposons quee les TextBox soient dans un Panel (MyPanel1), alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TextBox)MyPanel1.Controls["categorie"+i.ToString()]).Text = "la modification a apporter";

  3. #3
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    S'il ne s'agit que de modifier la propriété Text, le cast est inutile (cette propriété étant définie par Control et héritée par Textbox)

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Merci à vous deux pour vos réponses ultra rapides !

    @Graffito Merci beaucoup ! là étant au boulot je testerai ce code chez moi dés ce midi, je vous tiendrai au courant.


    Citation Envoyé par Sehnsucht Voir le message
    S'il ne s'agit que de modifier la propriété Text, le cast est inutile (cette propriété étant définie par Control et héritée par Textbox)
    Hum je n'ai pas bien compris, je dois vous avouer que je ne suis vraiment habitué qu'au C : je ne découvre l'objet que maintenant en meme temps que le c# et le sdk de wp. Tu veux dire qu'il y aurait plus simple que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TextBox)MyPanel1.Controls["categorie"+i.ToString()]).Text = "la modification a apporter";

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    salut,
    il voulait juste dire que le cast : "(TextBox)moncontrol" (à comprendre : "je précise que moncontrol est un textbox") n'est pas nécessaire car moncontrol à lui aussi une propriété "Text" d'où :
    moncontrol.Text équivaut à (TextBox)moncontrol.Text

    en fait c'est bon à savoir mais ... ca revient exactement au même donc :
    tu t'en fout les deux marchent

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Ah d'accord merci pour l'explication

    j'ai hate de tester ca entre midi et deux, je vous tiendrai au courant

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Merci pour vos aide, je viens d'essayer le code en question :

    Citation Envoyé par Graffito Voir le message
    Supposons quee les TextBox soient dans un Panel (MyPanel1), alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TextBox)MyPanel1.Controls["categorie"+i.ToString()]).Text = "la modification a apporter";
    Arf, j'ai une erreur avec :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    ((TextBox)ContentPanel.Controls["categorie" + i.ToString()]).Text = "la modification a apporter";

    Précisement sur le "Controls" où l'IDE me dit que Controls n'existe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'System.Windows.Controls.Grid' does not contain a definition for 'Controls' and no extension method 'Controls' accepting a first argument of type 'System.Windows.Controls.Grid' could be found (are you missing a using directive or an assembly reference?)
    Pourtant mes Textbox sont bien dans le panel ContentPanel :

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="10,0,14,0">
    // les textbox
    </Grid>

    Une idée ? ya un truc que j'ai oublié ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    je pense que ton code à du caster ContentPanel en TextBox (ce qui n'est pas possible) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((TextBox)ContentPanel.Controls["categorie" + i.ToString()]).Text = "la modification a apporter";
    essaye avec une parenthèse de plus :l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((TextBox)(ContentPanel.Controls["categorie" + i.ToString()])).Text = "la modification a apporter";
    là on précise bien que c'est l'item de la collection Controls qui est casté

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Toujours pas

    J'ai tenté aussi sans le cast, juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ContentPanel.Controls["categorie" + i.ToString()].Text = "la modification a apporter";
    Qui donne la meme erreur. D'ailleurs dans le message d'erreur il y a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "(are you missing a using or an assembly reference?)"
    Je ne comprend pas du tout ce que ca veut dire, mais en gros il manque un élément dans la syntaxe non ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    il te dit bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'System.Windows.Controls.Grid' does not contain a definition for 'Controls' and no extension method 'Controls' accepting a first argument of type 'System.Windows.Controls.Grid' could be found (are you missing a using directive or an assembly reference?)
    traduction : ton "grid" (contentpanel) n'est pas censé avoir de propriété "Controls"; vu que ton code compile : j'ai un doute...

    je pense que tu as tout de même un problème de cast, vérifie bien tes parenthèses; sinon ya un truc qui m'a échappé

  11. #11
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Il ne s'agit pas de WindowsForms ici mais de WPF (qui fonctionne différemment).
    Les précédentes réponses étaient basées sur WindowsForms.
    A priori (je connais mal WPF personnellement) il semblerait que la propriété à utiliser soit Children et non pas Controls.

    Moralité, toujours penser à préciser les technos utilisées

    Cordialement !

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Toujours coincé

    J'utilise donc maintenant .Children au lieu de .Controls, mais pas moyen de trouver la méthode de .Children pour sélectionner un item de la Grid via son x:Name

    Mais merci de m'avoir aiguillé vers la solution !

    Du coup mon post fait un peu hors sujet ici, je vais créer un nouveau sujet dans la section windows phone

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

Discussions similaires

  1. Quelle est la bonne syntaxe?
    Par Anduriel dans le forum MATLAB
    Réponses: 6
    Dernier message: 18/07/2011, 11h02
  2. window.open() : quelle est la bonne syntaxe ?
    Par michaelyere dans le forum ASP.NET
    Réponses: 6
    Dernier message: 02/01/2010, 11h48
  3. [Conception] quel est le type de variable a choisir?
    Par King_T dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/05/2006, 00h27
  4. [c# 2.0]TryParseExact Quelle est la bonne syntaxe ?
    Par Pierre8r dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/05/2006, 19h34
  5. [langage] "@$" Quel est ce type de variable?
    Par YanK dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2005, 18h07

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