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

Windows Forms Discussion :

Utilisation du FlowLayoutPanel - vilaine croix rouge


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Points : 13
    Points
    13
    Par défaut Utilisation du FlowLayoutPanel - vilaine croix rouge
    Bonjour à tous,

    j'affiche dynamiquement dans un FlowLayoutPanel une série de boutons.
    Cela fonctionne très bien, mais dans le fond du FlowLayoutPanel apparaît une grande croix rouge avec des bords. Je pense que cela détermine le FlowLayoutPanel.

    Je n'arrive pas à la supprimer. Quelqu'un aurait-il une solution?

    Merci

  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 749
    Points
    39 749
    Par défaut
    Est-ce que tu as mis une image en fond ? Une croix rouge apparait parfois si l'image utilisée pour le fond est détruite (par un appel à Dispose par exemple)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Points : 13
    Points
    13
    Par défaut
    Bonjour tomlev,

    merci pour ton aide.

    Non, je n'ai mis aucune image en fond.
    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void flpCategories_Paint(object sender, PaintEventArgs e)
            {
                flpCategories.Dock = DockStyle.Fill;
                foreach (Categorie ca in unecaisse.getCatgories())
                {
                    ButtonCategorie b = new ButtonCategorie(ca);
     
                    b.Click += new EventHandler(UpdateProduktList);
                    flpCategories.Controls.Add(b);
                }
                flpCategories.Controls.Add(flpCategories);
            }
    J'ai essayé d'autres conteneur mais cela ne marche pas.

    Aurais-tu une autre idée ?

    Merci

  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 749
    Points
    39 749
    Par défaut
    Il faut pas ajouter des contrôles enfants dans l'évènement Paint ; fais le ailleurs, ça devrait marcher sans problème.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Points : 13
    Points
    13
    Par défaut
    Bonjour Tomlev,

    pourrais-tu préciser ? je ne comprends pas bien.

    Merci

  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 749
    Points
    39 749
    Par défaut
    Bah je comprends pas trop ce que tu comprends pas en fait

    Tu ajoutes des contrôles enfants au FlowLayoutPanel alors qu'il est en train de se dessiner (évènement Paint), et je suis pas sûr que ce soit supporté. D'autant plus que ces contrôles vont être ajoutés de nouveau à chaque fois que le FlowLayoutPanel va se redessiner, donc c'est pas très logique...

    D'autre part, j'avais pas vu au début, mais cette ligne n'a aucun sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    flpCategories.Controls.Add(flpCategories);
    ça revient à ajouter le contrôle comme enfant de lui même... et ça c'est certainement pas supporté !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Points : 13
    Points
    13
    Par défaut
    en fait, j'ai repris un tuto sur YouTube. Je ne savais pas vraiment comment afficher dynamiquement des boutons.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Points : 13
    Points
    13
    Par défaut
    C'est bon j'ai fait un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach (Categorie ca in unecaisse.getCatgories())
                {
                    b = new ButtonCategorie(ca);
                    flowPanelCategorie.Controls.Add(b);
                }
    et cela fonctionne.
    Je me suis compliqué la vie je crois.

    Merci de ton aide !

  9. #9
    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 749
    Points
    39 749
    Par défaut
    Oui mais si tu fais ça dans le Paint tu vas encore avoir un problème, puisque les boutons vont être ajoutés à nouveau à chaque fois que le FlowLayoutPanel sera redessiné (ce qui arrive très souvent), donc à la fin tu auras beaucoup plus de boutons que nécessaire.

    D'autre part, si tu ne t'abonnes plus à l'évènement Click, tes boutons ne feront rien du tout...

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 36
    Points : 13
    Points
    13
    Par défaut
    Bonjour tomlev,

    j'ai changé et je place mes boutons dans un simple panel et je m'abonne à événement. Je charge mes boutons dans le load

    Ce qui donne à présent ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ButtonCategorie b;
                foreach (Categorie ca in unecaisse.getCatgories())
                {
                    b = new ButtonCategorie(ca);
                    PanelCategorie.Controls.Add(b);
                    b.Click += new EventHandler(b_Click);
                }
    et mon événement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void b_Click(object sender, EventArgs e)
            {
                ButtonCategorie b = (ButtonCategorie)sender;
                Categorie c = (Categorie)b.Tag;
                MessageBox.Show(string.Format("je suis la catégorie : {0}",c.LibelleCategorie));
            }

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

Discussions similaires

  1. Croix rouge seulement sur nom du projet
    Par xant dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 04/05/2007, 12h25
  2. Probleme croix rouge au lieu d'applet
    Par bolandfranck dans le forum Applets
    Réponses: 4
    Dernier message: 03/05/2007, 18h15
  3. petite croix rouge
    Par frandis dans le forum Oracle
    Réponses: 4
    Dernier message: 13/12/2006, 11h08
  4. [VB.NET] La croix rouge de fermeture ne déclenche pas close
    Par LaChips dans le forum Windows Forms
    Réponses: 10
    Dernier message: 07/04/2006, 17h45
  5. Associer Script a la croix rouge fermeture fenetre
    Par Oaurelius dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/11/2005, 19h43

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