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 :

Lire des picturebox en boucle ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 16
    Par défaut Lire des picturebox en boucle ?
    Bonjour

    Dans une FORM j'ai des images qui portent un même nom de racine.
    Exemple : IMG_1 IMG_2 IMG3, etc...
    J'aimerais savoir si je peux faire une boucle
    avec un incrément x pr leur attribuer la méthode .visible à false ou true ?

    Et comment le faire.

    merci de vot' attention.

    Philippe

  2. #2
    Candidat au Club
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut
    Tu veux dire par là que tu as n pictureBox et tu veux pouvoir les rendre visible ou invisible facilement?

    Tu as plusieurs choix, soit tu créer une list qui contient toute tes picturebox, et tu fais un foreach, ou bien tu utilise la réflexion(très gourmand en ressource.)

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Bonjour,

    Tu ne nous donne pas le nom de la techno d'affichage, ce n'est pas très facile

    Dans la majeure partie des cas, à part si tu veux en afficher certaines et d'autres non, il sera plus simple de modifier la propriété Visible du container parent. (Le stackpanel, la listbox ou le truc où tu as mis toutes les photos).
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  4. #4
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 16
    Par défaut
    Pour Lyric :
    Oui il s'agit de 18 images ou dans certains cas j'afficherai les x premières / 18.
    comment je crée une list qui contient mes picturebox ?

    Pour Maxime :
    ma techno d'affichage est pr le moment 18 fois (x 4 joueurs) via un test :

    IMG_1.visible = true;
    IMG_2.visible = false;
    etc...

    M'ci à vs 2

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    En fait, une technologie d'affichage est ce qui te permet d'avoir quelque chose d'affiché à l'écran. Pour .NET, on pourrait citer Silverlight, WPF, WebForms et WinForms (Il y en a sûrement d'autres que je ne connais pas)

    Selon cette technologie, les moyens de faire sont différents. Si tu veux afficher les X premières sur 18, je crois que tu n'as pas d'autres choix d'itérer dessus. Tu as deux manières de le faire :

    Une boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i = 0; i < imageNumberToDisplay; i++)
    {
        this.Images[i].Visibility = Visibility.Visible;
    }
    Linq :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.Images.Take(imageNumberToDisplay).ToList().ForEach(i => i.Visibility = Visibility.Visible);
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 16
    Par défaut
    Merci Maxime

    Pr moi c'est la méthode d'affichage : Winforms donc.

    Juste la premère solution (boucle for each) est à prendre ? ou aussi le linq ?

    Mais comment fait il le lien entre this.Images[i] et les noms des pictures IMG_1 IMG_2, etc... ?


    Philippe

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Les deux codes sont équivalents. Par contre, vu que tu es en WinForms, tu développes surement dans une version ancienne du FrameWork et LinQ peut ne pas exister. Dans ce cas, le for est la seule possibilité que tu puisses utiliser.

    J'ai pris ici un exemple où tu avais toutes tes images dans une liste. Rien ne t'empêche de mettre toutes tes images dans un container ou alors mettre un truc du genre au début de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public MaWinform()
    {
        InitializeComponents();
        List<string> toto = new List<string>();
        toto.Add(img1);
        toto.Add(img2);
        //Etc...
    }
    C'est un peu plus sale mais au moins tu peux essayer de voir si ça marche.
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 35
    Par défaut
    Initialise tes images directement dans une méthode et non pas avec le concepteur graphique, de cette manière tu pourras les stockés dans un List<> par exemple et les réutiliser au moment voulu !

    P.S .Visible n'est pas une méthode mais un attribut

Discussions similaires

  1. Lire des nombres en boucle et Problème avec les tableaux
    Par regisyves dans le forum Visual C++
    Réponses: 4
    Dernier message: 28/04/2011, 20h43
  2. Lire des define dans une boucle
    Par William210 dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2010, 19h28
  3. lire et sauver des fichiers en boucle
    Par lyraastriel dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/02/2010, 18h29
  4. [Débutant] Lire des fichiers .mat en boucle
    Par niepoc dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/06/2008, 13h41
  5. [Débutant] Lire des fichiers texte en boucle dans un programme
    Par niepoc dans le forum MATLAB
    Réponses: 6
    Dernier message: 20/05/2008, 18h05

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