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 :

créer dynamiquement des instances d'objet au travers d'une boucle


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 9
    Points
    9
    Par défaut créer dynamiquement des instances d'objet au travers d'une boucle
    Bonjour,

    Voila il faudrait que je crée 42 Ellipses et faire à chaque fois quelques opérations dessus. Au lieu d'écrire 42 fois les mêmes lignes de code j'aimerais bien faire l'opération une seule fois au travers d'une boucle for

    Cependant, je n'ai aucune idée de comment faire, j'avais essayé un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i=0; i<42; i++) {
        Ellipse ellipse = new Ellipse();
        ellipse.Name = "ellipse" + i;
        ...
    }
    mais ça n'a pas l'air de marcher

    est ce qu'il y aurait une autre façon de faire ??

    d'avance merci pour votre aide!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Bah là tu crées des Ellipses, mais après tu en fais quoi ? Tu les ajoutes à une interfaces graphiques ? C'est quoi comme techno, WPF je suppose ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    wpf oui.

    je change leur couleur et je les mets dans une uniformGrid, ainsi que dans un tableau.

    l'uniformGrid servira de représentation visuelle, et le tableau me permettra d'aller chercher la référence vers n'importe quelle ellipse et effectuer des modifications dessus.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    dans ce cas ton code est correct, il manque juste l'ajout de l'ellipse à l'UniformGrid :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unifGrid.Children.Add(ellipse);

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    j'avais déjà tout ça..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for (int i=0; i<42; i++) {
      Ellipse ellipse = new Ellipse();
      ellipse.Name = "ellipse" + i;
      ellipse.Fill = new SolidColorBrush(Colors.White);
      tabTemp[i] = ellipse;
      gridPlateau.Children.Add(ellipse);
    }
    le problème c'est qu'à la fin je me retrouve avec seulement une seule ellipse, au lieu d'avoir ellipse0, ellipse1, ellipse3,...ellipse42. C'est pour ça que j'ai pas l'impression que ma "création" dynamique marche correctement..

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Bizarre, pourtant ça a l'air correct... tu es sûr que gridPlateau est bien une UniformGrid et non une Grid ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    oui oui..

    mais la uniformGrid se créé bien et visuellement correspond bien à ce que j'ai demandé.

    le problème c'est que les instances d'Ellipse n'ont plus l'air d'"exister" par la suite et donc je n'arrive plus à les manipuler..

    on dirait bien que je suis parti pour créer les 42 une par une

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par mouette999 Voir le message
    le problème c'est que les instances d'Ellipse n'ont plus l'air d'"exister" par la suite et donc je n'arrive plus à les manipuler..
    Euh... c'est à dire ? Sur quelle observation te bases-tu pour dire ça ? Si elles sont affichées, elles existent... Et tu as des références dessus dans ton tableau tabTemp.

  9. #9
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 487
    Points
    5 487
    Par défaut
    Si mes souvenirs sont bons, un objet shape (et descendants) ne participe pas au layout, il se comporte comme s'il avait une taille nulle (d'ailleurs ton code ne spécifie pas leur taille au passage). Donc l'uniformgrid choisirait une taille nulle pour les lignes et les colonnes.

    Tente de leur assigner un taille. Si ça ne fonctionne pas, mets-les dans un canvas en précisant manuellement X et Y (ce qui est plus rapide à traiter par wpf au passage).

    PS : Brushes.White plutôt que d'instancier un nouveau pinceau.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par DonQuiche Voir le message
    PS : Brushes.White plutôt que d'instancier un nouveau pinceau.
    en effet, c'est peut être mieux comme cela

    Euh... c'est à dire ? Sur quelle observation te bases-tu pour dire ça ? Si elles sont affichées, elles existent... Et tu as des références dessus dans ton tableau tabTemp.
    disons que je veux changer la couleur de l'ellipse 26 , impossible de le faire, il me dira que l'objet n'existe pas

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par mouette999 Voir le message
    disons que je veux changer la couleur de l'ellipse 26 , impossible de le faire, il me dira que l'objet n'existe pas
    Euh... j'ai jamais vu une erreur comme ça ! C'est peut-être un problème dans ton code qui essaie de modifier l'ellipse. En principe si tu fais par exemple tabTemp[26].Fill = Brushes.Blue;, ça devrait marcher...

  12. #12
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas trop où est le problème.

    Quelle est la portée de ton tableau qui contient les ellipses créées ?

    Crées-tu bien les différentes ellipses à des positions différentes ?

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par tomlev Voir le message
    En principe si tu fais par exemple tabTemp[26].Fill = Brushes.Blue;, ça devrait marcher...
    bah figure toi que oui, ça marche
    tantôt ça allait pas, j'avais surement une bête erreur que j'ai du corriger depuis..

    en fait j'avais peut être fait ellipse32.Fill = Brushes.Blue à la place de tabTemp[32].Fill = Brushes.Blue


    enfin bref, merci à tous pour l'aide

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

Discussions similaires

  1. Créer dynamiquement des objets Java
    Par choko83 dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 02/05/2008, 14h53
  2. Créer dynamiquement des label
    Par flamel dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/08/2007, 14h44
  3. Réponses: 1
    Dernier message: 17/04/2007, 14h43
  4. [D5] Créer dynamiquement des variables dans une fonction
    Par MelkInarian dans le forum Delphi
    Réponses: 11
    Dernier message: 14/04/2007, 12h16
  5. [1.1] Comment lister l'ensemble des instance d'objets en cours ?
    Par maitrebn dans le forum Framework .NET
    Réponses: 2
    Dernier message: 25/09/2006, 13h48

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