Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INDEXER DES BOUTONS


Information sur la source

Catégorie :Astuces Source .NET ( DotNet ) Classé sous : bouton, indexer, tableau, array Niveau : Débutant Date de création : 23/01/2005 Vu : 6 475

Note :
7 / 10 - par 3 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Je ne fais ici que retranscrire du code provenant de : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchcreatingcontrolarraysinvisualbasicnetvisualcnet.asp
mais étant en anglais, celà peut rebuter certains, c'est pourquoi j'ai décidé de le retranscrire en c#
 

Source

  • Vous créez une class nommé ButtonArray... le namespace correspondant au nom de l'application
  • using System;
  • namespace testindex
  • {
  • public class ButtonArray : System.Collections.CollectionBase
  • {
  • private readonly System.Windows.Forms.Form HostForm;
  • public ButtonArray()
  • {
  • //
  • // TODO : ajoutez ici la logique du constructeur
  • //
  • }
  • public System.Windows.Forms.Button AddNewButton()
  • {
  • // crée une nouvelle instance de la class bouton
  • System.Windows.Forms.Button aButton = new
  • System.Windows.Forms.Button();
  • // ajoute le bouton à la collection existante
  • this.List.Add(aButton);
  • // ajoute le bouton sur la form qui l'appel
  • HostForm.Controls.Add(aButton);
  • // initialise le composant avec les valeurs suivantes
  • aButton.Top = Count * 25;
  • aButton.Left = 100;
  • aButton.Tag = this.Count;
  • aButton.Text = "Button " + this.Count.ToString();
  • // créer l'évenement clic
  • aButton.Click += new System.EventHandler(ClickHandler);
  • return aButton;
  • }
  • // Remplace le constructeur par défaut par celui-ci
  • public ButtonArray(System.Windows.Forms.Form host)
  • {
  • HostForm = host;
  • this.AddNewButton();
  • }
  • // récupère ou renvoie les propriété lié au bouton
  • public System.Windows.Forms.Button this [int Index]
  • {
  • get
  • {
  • return (System.Windows.Forms.Button) this.List[Index];
  • }
  • }
  • // supprime le composant
  • public void Remove()
  • {
  • // test si il y a des boutons
  • if (this.Count > 0)
  • {
  • // ici le code supprime le dernier bouton créer, mais vous pouvez le modifier à votre guise
  • HostForm.Controls.Remove(this[this.Count -1]);
  • this.List.RemoveAt(this.Count -1);
  • }
  • }
  • // Créer l'évenement click sur le bouton avec pour teste un message
  • public void ClickHandler(Object sender, System.EventArgs e)
  • {
  • System.Windows.Forms.MessageBox.Show("You have clicked button " +
  • ((System.Windows.Forms.Button) sender).Tag.ToString());
  • }
  • }
  • }
  • Dans la form, dans la class principal ajoutez :
  • ButtonArray MyControlArray;
  • Dans le code il suffira de créer les boutons par :
  • MyControlArray = new ButtonArray(this);
  • et pour les boutons suivants:
  • MyControlArray.AddNewButton();
  • Pour supprimer :
  • MyControlArray.Remove();
  • On peut maintenant utilisé l'index sur le controle par MyControlArray[0].Text = "test";
Vous créez une class nommé ButtonArray... le namespace correspondant au nom de l'application

using System;

namespace testindex
{
	public class ButtonArray : System.Collections.CollectionBase 
	{
		private readonly System.Windows.Forms.Form HostForm;

		public ButtonArray()
		{
			//
			// TODO : ajoutez ici la logique du constructeur
			//

		}
		public System.Windows.Forms.Button AddNewButton()
		{
			// crée une nouvelle instance de la class bouton
			System.Windows.Forms.Button aButton = new 
				System.Windows.Forms.Button();
			// ajoute le bouton à la collection existante
			this.List.Add(aButton);
			// ajoute le bouton sur la form qui l'appel
			HostForm.Controls.Add(aButton);
			// initialise le composant avec les valeurs suivantes
			aButton.Top = Count * 25;
			aButton.Left = 100;
			aButton.Tag = this.Count;
			aButton.Text = "Button " + this.Count.ToString();
			// créer l'évenement clic
			aButton.Click += new System.EventHandler(ClickHandler);
			return aButton;
		}
		// Remplace le constructeur par défaut par celui-ci
		public ButtonArray(System.Windows.Forms.Form host)
		{
			HostForm = host;
			this.AddNewButton();
		}
		// récupère ou renvoie les propriété lié au bouton
		public System.Windows.Forms.Button this [int Index]
		{
			get
			{
				return (System.Windows.Forms.Button) this.List[Index];
			}
		}
		// supprime le composant
		public void Remove()
		{
			// test si il y a des boutons
			if (this.Count > 0)
			{
				// ici le code supprime le dernier bouton créer, mais vous pouvez le modifier à votre guise
				HostForm.Controls.Remove(this[this.Count -1]);
				this.List.RemoveAt(this.Count -1);
			}
		}
		// Créer l'évenement click sur le bouton avec pour teste un message
		public void ClickHandler(Object sender, System.EventArgs e)
		{
			System.Windows.Forms.MessageBox.Show("You have clicked button " + 
				((System.Windows.Forms.Button) sender).Tag.ToString());
		}
	}
}

Dans la form, dans la class principal ajoutez :
ButtonArray MyControlArray;

Dans le code il suffira de créer les boutons par :
MyControlArray = new ButtonArray(this);

et pour les boutons suivants: 
MyControlArray.AddNewButton();

Pour supprimer :
MyControlArray.Remove();

On peut maintenant utilisé l'index sur le controle par MyControlArray[0].Text = "test";

Conclusion

Si vous voulez plus d'information hésitez pas à aller sur msdn, il est fait pour ça.
 

Commentaires et avis

signaler à un administrateur
Commentaire de cssiste le 29/03/2005 03:26:25

bonjour,je voudrais bien avoir un exemple en C# qui illustre un bouton et un label.Lorsquon clique sur  le bouton on exécute une requete SQL (SGBD:sql server)qui calcule par exemple le nombre d'abonnés dans un réseau et d'affecter la valeur sortie dans le label.
j'attend votre aide merci

signaler à un administrateur
Commentaire de tmcuh le 29/03/2005 18:50:30

mdrrr en fonction de la température t'as oublié... retente ta requete sur le forum ;)

PS : merci à celui qui m'as mis 1/10 sans mettre de commentaire

signaler à un administrateur
Commentaire de fred65200 le 25/06/2005 00:43:43

Salut, je débute en C# et depuis quelques jours je cherchais un exemple concret et complet de création dynamique de linkLabel. Ta retranscription m'a bien aidé. Je t'avoue que je suis aller sur MSDN pour reprendre le tut. les étapes et le fonctionnement du code y est bien détaillé.
Merci.

signaler à un administrateur
Commentaire de tmcuh le 26/06/2005 20:31:59

Merci, au moins il a servi à quelqu'un :) ... sinon tu peux tenter de passer en framework 2.0 qui permet si on me l'a bien renseigné l'indexation par les propriétés; et non par un artifice. Beaucoup de monde vient du vb et c'est pour celà que j'ai rajouté cette article ;)

PS : si tu repasse tu peux toujours mettre un note ça fait toujours plaisir :p

Amicalement tmcuh

signaler à un administrateur
Commentaire de fred65200 le 27/06/2005 04:12:42

Salut, sympa de répondre. En effet je programmais en VB et surtout en VBA. En C#, pour l'instant, je patauge un peu. As tu un bouquin d'initiation à me conseiller?
Fred65200

signaler à un administrateur
Commentaire de tmcuh le 27/06/2005 17:21:55

salut, pour le bouquin j'ai pris "langage c#" de microsoft... pas mal fait mais manque l'ADO, sinon tu peux allé faire un tour sur le site de l'école (ou j'étais), le prof avez mis sont cours : http://www.hesit.be/resumes.php?branche=info&annee=3&type=1

amicalement echo

signaler à un administrateur
Commentaire de fred65200 le 27/06/2005 17:24:49

Merci, je materai cela ce soir
@+

signaler à un administrateur
Commentaire de hamouda1tn le 16/07/2006 10:31:09

merci pour cette source
c super

signaler à un administrateur
Commentaire de lagoelle le 15/12/2006 19:35:38

Excellente initiative ! Merci beaucoup de penser au "développeur du dimanche" ;-)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Conversion string[,] depuis System.Array [ par el_teedee ] Bonjour, tout est dans le titre, je récupère un System.Array qui, par exemple est un tableau de string [5,3] : [1,1] [1,2][1,3]... [5,1] [ Stockage de la date sytème dans un tableau [ par Shany ] Salut tout le monde,Je code avec Visual studio .net en C#. J'ai un petit problème. J'aimerais pouvoir stocker ma date système dans un tablea Array en readonly [ par Julien237 ] Bonjour,J'ai une propriété de ma classe qui est un tableau de float, j'aurais voulu que l'utilisateur puisse toujours avoir accès à ces informations, Array.Sort() [ par engelho ] Bonjour,Je possède un un tableau que je souhaite trier. Toutefois ce tableau comprend des objets...J'ai implémenté la fonction CompareT indexer les TextBox [ par bellak ] Salut tt le monde ;j'ai un petit soucis , mon form contient plusieurs TextBox et un bouton , et je veux que si je clique sur le bouton tout les TextBo array string tableau["toto"] donne "titi" C# [ par sh4gm4 ] Salut,je cherche a faire la même chose que le post ci-dessous,mon problème, c'est que la reponse ne marche pas chez moi ! quelqu'un aurait une idée du Array.Sort sur un tableau de structure [ par MAQFAB ] Bonjour à tous et à toutes,J'essaye d'utiliser la fonction Array.Sort d'une manière un peu poussée, et je ne m'en sors pas.Considérons une structure : MDI Form parent avec control bouton [ par seb123 ] Bonjour,Je voudrai placer un bouton sur une MDI form parent mais quand j'ouvre une MDI form child le bouton apparait en premier plan devant la MDI chi taille d'un tableau [ par some_one ] Bonjour Je connaitre la dimension (nombre de cases) d'un tableau nommé "words".string[] words = ligne.Split('/');Ya til une fonction qui permet de fai Passer un tableau en paramètre [ par Topnotch ] Bonjour,j'aimerais savoir comment passer un tableau de string ,(ArrayList) plus précisement, à une fonction. Voici mon code:public ArrayList LireTable


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,45 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.