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 :

comment instancier un objet avec un nom de variable dynamique


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut comment instancier un objet avec un nom de variable dynamique
    bonjour,

    pour mon application actuelle, je souhaite utiliser des formulaires MDI. rien de plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Form myChild = new myChild();
    myChild.MdiParent = this;
    myChild.Show();
    bon, maintenant je vais compliquer les choses. si j'utilise ce code sur chaque bouton de mon application, ça va utiliser beaucoup de place >_<
    j'aimerais donc faire une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ouvertureChild("LeNomDeMonForm");
    private void ouvertureChild(string nomForm)
    {
        Form myChild = new[nomForm]();
        myChild.MdiParent = this;
        myChild.Show();
    }
    enfin vous voyez le principe ...
    comment puis faire ceci ? je coince

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Tu peux le faire avec la reflexion pour trouver le type à partir du nom et la classe Activator pour créer une instance.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    merci je fais actuellement des recherches sur google. je ne suis pas le seul à vouloir faire ça, mais aucun des post que je trouve n'apporte de solution. je bricole ^^ si je n'arrive pas à trouver de solution par moi-même, je reviendrais demander e l'aide ici. je vous tiens au courant donc, merci

  4. #4
    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
    Bonjour,

    J'ai peut-être une idée, qui me semble convenir à savoir utiliser une méthode générique de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void ouvertureChild<F>() where F : Form, new()
    {
        F myChild = new F();
        myChild.MdiParent = this;
        myChild.Show();
    }
    //Un exemple d'appel:
    ouvertureChild<ChildForm>();
    En espérant que cela réponde au problème.

    Cordialement !

  5. #5
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    merci Sehnsucht, ta solution marche.
    maintenant j'aimerais faire passer plusieurs paramètres dans cette fonction, car le code que j'ai montré ci dessus n'est qu'un extrait...
    comment puis-je procéder ?
    cette syntaxe est étrange, c'est du c#3 ? mon projet est en c#3, mais c'est tout nouveau pour moi ^^

  7. #7
    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
    C'est une méthode générique qui existe depuis le framework 2.0 si je ne fais pas erreur.
    Pour passer des paramètres il suffit de faire comme avant, un exemple simple pour définir le titre du formulaire enfant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void ouvertureChild<F>(string title) where F : Form, new()
    {
        F myChild = new F();
        myChild.Text = title;
        myChild.MdiParent = this;
        myChild.Show();
    }
    //Un exemple d'appel:
    ouvertureChild<ChildForm>("ChildForm's Title");
    Cordialement !

  8. #8
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    tout simplement merci

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/03/2011, 20h40
  2. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  3. [XSLT] - Comment selectionner une balise avec un nom variable ?
    Par bchabot dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2006, 09h59
  4. Réponses: 6
    Dernier message: 18/01/2006, 16h26
  5. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14

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