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 :

Probleme avec plus de 50 composants dans une form


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut Probleme avec plus de 50 composants dans une form
    Voilà j'ai une fenetre qui contient plus de 50 labels.

    J'aimerais que quand je clique sur l'un le label change de couleurs.

    Mais je ne me vois pas faire un évenement pour chaque label.

    J'ai pensé à une boucle mais je vois pas comment faire.

    Est ce que quelqun aurait une idée voilà un exemple de fenetre avec moins de label.

    Merci
    Images attachées Images attachées  

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Par défaut reponse
    Pour moi le mieux dans ce genre de cas c'est de faire une classe (MyLabel) qui herite de Label et dans laquelle tu met ton changement de couleur de fond dans l'evenement click.

    Dans ta form ou il y a les 50 labels tu met des "MyLabel" à la place des "Label", pour ca il faut que tu les instancient dans le code et non par l'interface graphique (mais j'imagine que c'est déjà ce que tu fait...)

    Voila si c'est pas clair n'hesite pas ...

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Salut,

    Tout d'abord merci.

    Je vois un peu ce que tu veux dire mais tu pourrais me donner un exemple de classe héritée stp pour bouton?

    J'ai cherché un peu et j'ai pu instancier une boucle. Pour placefr mes boutons.

    En fait j'ai changé c'est des bouttons.

    Mais c'est laz meme.

    Mais c'est apres je vois pas comment faire pour dire quand je clique sur bouton1 et non sur le deux.

    Tiens voilà mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    private void createButtonInterface()
    		{
    			ArrayList buttons = new ArrayList();
     
    			int i=0;
    			for(i=0;i<28;i++)
    			{
    				buttons.Insert(i,new Button());
    			}
    			i=0;
    			int j=0;
    			int k=0;
    			foreach(Button b in buttons)
    			{
    				int x =72;
    				int y = 40;
    				if(i==4)
    				{
    					j++;
    					i=0;
    				}
     
    				if(j>=2&&j<5)
    				{
    					y=57;
    				}
     
    				if(j>=5)
    				{
    					y=75;
    				}
     
    				b.Size = new System.Drawing.Size(45, 37);
    				System.Drawing.Point placeBoutton =new System.Drawing.Point(x+i*58,y+40*j);		
     
    				b.Location = placeBoutton;
    				b.Name = "first" + k;
    				this.groupBox1.Controls.Add(b);
    				i++;
    				k++;
     
     
     
    			}
    		}

    Et là comment faire pour instancier les clics je vois pas.
    Images attachées Images attachées  

  4. #4
    Expert confirmé
    Avatar de Ditch
    Inscrit en
    Mars 2003
    Messages
    4 160
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mars 2003
    Messages : 4 160
    Par défaut
    Tous tes labels doivent pointent sur le même event handler. Là, tu as le sender et tu peux savoir sur lequel tu as cliqué.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    button1.Click += ...;
    button2.Click += ...;
    Donc dans ta boucle, tu feras
    Ils pointeront tous sur le même event. Là tu as dans les paramètres "object sender" que tu pourras utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Button b = (Button)sender;
    b.BackColor = Color.Red;

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Finalement j'ai réfléchi de la facon suivante.

    J'ai créé un controle boutton personnalisé.

    Avec dedans les attributs.

    Voilà ma classe controle


    Et puis du coup dans ma boucle ca change en cette instance:

    private void createButtonInterface()
    {
    ArrayList buttons = new ArrayList();
    string[] tab = new string[8];

    tab[0]="G";
    tab[1]="F";
    tab[2]="E";
    tab[3]="D";
    tab[4]="C";
    tab[5]="B";
    tab[6]="A";

    int i=0;
    for(i=0;i<28;i++)
    {
    buttons.Insert(i,new seatComponent());
    }
    i=0;
    int j=0;
    int k=0;
    foreach( seatComponent b in buttons)
    {
    int x =72;
    int y = 40;
    if(i==4)
    {
    j++;
    i=0;
    }

    if(j>=2&&j<5)
    {
    y=57;
    }

    if(j>=5)
    {
    y=75;
    }
    b.Size = new System.Drawing.Size(45, 37);
    //b.Image=Image.FromFile("");
    System.Drawing.Point placeBoutton =new System.Drawing.Point(x+i*58,y+40*j);
    b.Text=tab[j]+i.ToString();
    b.Location = placeBoutton;
    b.Name =tab[j]+i.ToString();
    // b.Click += new System.EventHandler(b.Name+"_click");
    this.groupBox1.Controls.Add(b);
    i++;
    k++;

    }
    }


    Mais ca ne fonctionne pas.

    Normalement vu que dans mon arraylist je ne crée pas de button mais un seatcomponent et qu'à chaque boutton de ce type est affecté l'évenement click.

    Mais ca ne fonctionne pas. Je ne comprends pas.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Désolé je remets bien le code

    Alors code de ma boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    private void createButtonInterface()
    		{
    			ArrayList buttons = new ArrayList();
    			string[] tab = new string[8];
     
    			tab[0]="G";
    			tab[1]="F";
    			tab[2]="E";
    			tab[3]="D";
    			tab[4]="C";
    			tab[5]="B";
    			tab[6]="A";
     
    		int i=0;
    			for(i=0;i<28;i++)
    			{
    				buttons.Insert(i,new seatComponent());
    			}
    			i=0;
    			int j=0;
    			int k=0;
    			foreach( seatComponent b in buttons)
    			{
    				int x =72;
    				int y = 40;
    				if(i==4)
    				{
    					j++;
    					i=0;
    				}
     
    				if(j>=2&&j<5)
    				{
    					y=57;
    				}
     
    				if(j>=5)
    				{
    					y=75;
    				}
    				b.Size = new System.Drawing.Size(45, 37);
    				//b.Image=Image.FromFile("");
    				System.Drawing.Point placeBoutton =new System.Drawing.Point(x+i*58,y+40*j);		
    				b.Text=tab[j]+i.ToString();		
    				b.Location = placeBoutton;
    				b.Name =tab[j]+i.ToString();
    			//	b.Click += new System.EventHandler(b.Name+"_click");
    				this.groupBox1.Controls.Add(b);
    				i++;
    				k++;
     
    			}
    		}
    Et code de mon controle personnalisé bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    using System;
    using System.Windows.Forms;
     
    namespace WindowsApplication6
    {
    	/// <summary>
    	/// Description résumée de buttons.
    	/// </summary>
    	public class seatComponent:System.Windows.Forms.Button
    	{
    		private System.Windows.Forms.Button button1;
     
    		int i=0;
     
    		public void InitializeComponent()
    		{ 
    			this.button1=new Button();
    			this.button1.Click+=new EventHandler(button1_Click);
    			this.button1.ForeColor = System.Drawing.Color.Red;
    		}
     
    		public seatComponent()
    		{
    			InitializeComponent();
    		}
     
    		private void button1_Click(object sender, System.EventArgs e)
    		{  MessageBox.Show(this.button1.Text);
    			if(button1.ForeColor==System.Drawing.Color.Red)
    			{
    				button1.ForeColor=System.Drawing.Color.Green;
    			}
     
    			else if(button1.ForeColor==System.Drawing.Color.Green)
    			{
    				button1.ForeColor=System.Drawing.Color.Yellow;
    			}
     
    			else if(button1.ForeColor==System.Drawing.Color.Yellow)
    			{
    				button1.ForeColor=System.Drawing.Color.Blue;
    			}
     
    			else if(button1.ForeColor==System.Drawing.Color.Blue)
    			{
    				button1.ForeColor=System.Drawing.Color.Red;
    			}
    		}
     
     
    	}
    }

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

Discussions similaires

  1. Ajuster des composants dans une Form en plein écran
    Par jalalnet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/06/2011, 10h15
  2. probleme avec l'affichage des images dans une jsp
    Par hypothese dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 27/05/2008, 16h56
  3. Centrer des composants dans une form?
    Par alg_dev dans le forum Delphi
    Réponses: 1
    Dernier message: 10/06/2007, 10h24
  4. [C#][VS2005] centrer composants dans une form
    Par camilero dans le forum Windows Forms
    Réponses: 10
    Dernier message: 06/07/2006, 11h48

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