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