Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Windows > Windows Forms
Windows Forms Forum d'entraide sur le développement Windows Forms & Applications Windows. Avant de poster -> Articles Windows Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 22h54   #1
Subteranea
Invité de passage
 
Homme
Inscription : 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
Subteranea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h23   #2
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 793
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
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 : 17 793
Points : 34 069
Points : 34 069
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)
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 22h15   #3
Subteranea
Invité de passage
 
Homme
Inscription : 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
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
Subteranea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 00h09   #4
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 793
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
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 : 17 793
Points : 34 069
Points : 34 069
Il faut pas ajouter des contrôles enfants dans l'évènement Paint ; fais le ailleurs, ça devrait marcher sans problème.
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/01/2013, 23h43   #5
Subteranea
Invité de passage
 
Homme
Inscription : 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
Bonjour Tomlev,

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

Merci
Subteranea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 23h54   #6
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 793
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
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 : 17 793
Points : 34 069
Points : 34 069
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é !
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 23h56   #7
Subteranea
Invité de passage
 
Homme
Inscription : 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
en fait, j'ai repris un tuto sur YouTube. Je ne savais pas vraiment comment afficher dynamiquement des boutons.
Subteranea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 00h14   #8
Subteranea
Invité de passage
 
Homme
Inscription : 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
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 !
Subteranea est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 02h23   #9
tomlev
Rédacteur/Modérateur


 
Avatar de tomlev
 
Homme Thomas Levesque
Développeur .NET
Inscription : février 2004
Messages : 17 793
Détails du profil
Informations personnelles :
Nom : Homme Thomas Levesque
Âge : 31
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 : 17 793
Points : 34 069
Points : 34 069
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...
__________________

Pas de questions techniques par MP ! Le forum est là pour ça...

Tutoriels : Les markup extensions en WPF - La sérialisation XML avec .NET (Aller plus loin) - Extraction de données de pages web à l'aide de HTML Agility Pack
Projet : Dvp.NET, la librairie .NET open-source des membres de Developpez !
tomlev est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2013, 10h29   #10
Subteranea
Invité de passage
 
Homme
Inscription : 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
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));
        }
Subteranea est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h27.


 
 
 
 
Partenaires

Hébergement Web