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 :

[C# 2.0] Comment invoquer un objet à partir d'une chaîne de caractères ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut [C# 2.0] Comment invoquer un objet à partir d'une chaîne de caractères ?
    Hello,

    J'ai une méthode à laquelle j'envoie en paramètre un nom de composant (sous forme de chaîne, extraite d'une base de données).

    Mais comment utiliser cette chaîne dans l'expression d'accès d'une propriété à ce composant, afin de pouvoir agir dessus ?

    Exemple :
    Soit param une chaîne contenant "Label1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void changerNom(string param)
    {
        this.param.Text = "bidule";
    }
    Je voudrais en queslque sorte avoir une méthode qui fait l'inverse de Component.ToString...

    Merci.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    J'ai rien compris.....

  3. #3
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Je crois comprendre (mais c'est vrai que t'es pas clair là) que tu veux parler de Reflexion.

    Va voir là ! http://www.developpez.net/forums/sho...d.php?t=166458

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 105
    Par défaut
    Tu peux aussi éventuellement itérer à travers la collection de contrôles pour trouver celui dont la propriété Name correspond à ta chaîne de caractères.

    Bonne chance

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Morpheus :
    J'ai reformulé la question

    Guitoux1 :
    Je n'ai jamais utilisé la réflexion auparavant. J'ai été voir dans mon bouquin d'O'Reilly, mais je ne vois pas le rapport. Ca parle d'assemblage... Dans le fil du lien que tu m'as donné, le besoin est différent. Le gars veut créer des composants. Moi, je veux simplement en changer une propriété.

    Smikar :
    J'y ai pensé, mais ça m'obligerait à parcourir de manière récursive les contrôles. Un peu lourdingue, surtout que je dispose déjà des noms des contrôles.

  6. #6
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    oui mais avant de changer de changer la propriété d'un composant, il faut bien le créer, non ? Or là tu pars d'une chaine de caractère, donc pas d'un composant créé

  7. #7
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par oodini
    Morpheus :
    J'ai reformulé la question.
    Oui et j'ai donc reformulé ton titre
    Citation Envoyé par oodini
    Guitoux1 :
    Je n'ai jamais utilisé la réflexion auparavant. J'ai été voir dans mon bouquin d'O'Reilly, mais je ne vois pas le rapport. Ca parle d'assemblage... Dans le fil du lien que tu m'as donné, le besoin est différent. Le gars veut créer des composants. MOi, je veux simplement en changer une propriété.
    Tu te trompe car Guitoux a très bien répondu en t'indiquant la piste de Reflection. Cet outil est très puissant et répond parfaitement à ton souci. Il te faut simplement comprendre que les composants auquels tu veux acceder sont en fait des champs(Field) généralement Private. Ce qui necessite l'utilisation de la méthode GetField avec l'énumeration BindingFlags

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/06/2013, 22h57
  2. Réponses: 6
    Dernier message: 27/06/2007, 10h33
  3. importer module à partir d'une chaîne de caractères
    Par j_p_g dans le forum Général Python
    Réponses: 2
    Dernier message: 23/04/2007, 15h15
  4. Réponses: 8
    Dernier message: 16/06/2006, 01h06
  5. Réponses: 6
    Dernier message: 18/01/2006, 16h26

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