Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2012
    Messages : 34
    Points : 3
    Points
    3

    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 Thomas Levesque
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 188
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Levesque
    Âge : 32
    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 188
    Points : 36 620
    Points
    36 620

    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
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2012
    Messages : 34
    Points : 3
    Points
    3

    Par défaut

    Bonjour tomlev,

    merci pour ton aide.

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

    Code :
    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 Thomas Levesque
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 188
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Levesque
    Âge : 32
    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 188
    Points : 36 620
    Points
    36 620

    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
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2012
    Messages : 34
    Points : 3
    Points
    3

    Par défaut

    Bonjour Tomlev,

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

    Merci

  6. #6
    Rédacteur/Modérateur



    Homme Profil pro Thomas Levesque
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 188
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Levesque
    Âge : 32
    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 188
    Points : 36 620
    Points
    36 620

    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 :
    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
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2012
    Messages : 34
    Points : 3
    Points
    3

    Par défaut

    en fait, j'ai repris un tuto sur YouTube. Je ne savais pas vraiment comment afficher dynamiquement des boutons.

  8. #8
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2012
    Messages : 34
    Points : 3
    Points
    3

    Par défaut

    C'est bon j'ai fait un simple
    Code :
    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 Thomas Levesque
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 188
    Détails du profil
    Informations personnelles :
    Nom : Homme Thomas Levesque
    Âge : 32
    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 188
    Points : 36 620
    Points
    36 620

    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
    Invité de passage
    Homme Profil pro
    Inscrit en
    janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2012
    Messages : 34
    Points : 3
    Points
    3

    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 :
    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •