Indexer des boutons

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 803 fois - Téléchargée 31 fois

Contenu du snippet

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 / Exemple :


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.

A voir également

Ajouter un commentaire

Commentaires

cs_lagoelle
Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009
-
Excellente initiative ! Merci beaucoup de penser au "développeur du dimanche" ;-)
hamouda1tn
Messages postés
2
Date d'inscription
samedi 15 juillet 2006
Statut
Membre
Dernière intervention
14 septembre 2007
-
merci pour cette source
c super
fred65200
Messages postés
100
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 février 2009
-
Merci, je materai cela ce soir
@+
tmcuh
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
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
fred65200
Messages postés
100
Date d'inscription
lundi 21 février 2005
Statut
Membre
Dernière intervention
18 février 2009
-
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.