Creation d'objet dynamique (FORM)

Résolu
katerson Messages postés 47 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 24 juin 2011 - 24 sept. 2010 à 10:37
katerson Messages postés 47 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 24 juin 2011 - 24 sept. 2010 à 15:12
Salut à tous,


Je travaille en ce moment sur Visual Studio et j'utilise les Forms pour mon application.

Je viens de créer une arborescence (TreeView) et j'aimerai, lorsque je clique sur un élément de celle-ci, faire apparaître graphiquement son contenu.
Pour cela, j'aimerai créer dynamiquement des éléments (boutons, images) à chaque clique (et supprimer les précédents).

Avez-vous une idée de comment faire cela? Dois-je les créer sur le ClickEvent?

Je suis surpris de ne pas trouver d'info sur le net et je rame pas mal...


Merci et A+

2 réponses

katerson Messages postés 47 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 24 juin 2011
24 sept. 2010 à 15:12
Pour ce que ça intéresse, il est possible d'utiliser la méthode suivante :

System::Void CreateObject(..., short ObjIndice)
{
//declaration de l'objet
Button^ MyButton;
MyButton = gcnew Button();

//infos de l'objet
MyButton->Name = p_Name + Convert::ToString(ObjIndice);

//je décale l'objet de "25" pour ne pas écraser les précédents
MyButton->Top = ObjIndice* 25;
MyButton->Text = p_Name + Convert::ToString(ObjIndice);
}

J'appelle "CreateObject" autant de fois que j'en ai besoin et j'incrémente ObjIndice.

A+
3
katerson Messages postés 47 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 24 juin 2011
24 sept. 2010 à 14:37
Je pensais initialement déclarer un tableau de bouton (par exemple) et l'appelle de l'évenement "TreeViewClick" faire :

---------------------------------------------------
CheckBox^ x[NB_INSTANCE_MAX];
x[Indice] = gcnew CheckBox();
...
Indice++;
---------------------------------------------------

Apparemment, cela semble impossible, le compilo me dit :
"a native array cannot contain this managed type"


Est-ce qu'il y a une autre solution?

Merci,
0