UserCrontrol + ArrayList [Résolu]

Signaler
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012
-
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012
-
Bonjour,

J'ai dû loupper quelquechose - en vb6 j'avais les property bags, maintenant c'est directement par le fichier design qu'il construit l'interface.

Je souhaite faire un usercontrol de TabList customisé, donc j'ai fait mon usercontrol TabList, j'ai créé une classe héritant d'un ArrayList fortement type, puis une classe de TabItem qui gére l'affichage individuel.

Au moment du design tout est Ok, je configure mes items - tout fonction. Au moment de l'execution, les items disparaissent, j'ai un tableau vide. Au niveau du code généré par le designer je vois bien qu'il n'instancie pas mes items et les rajoutte au tableau avec un add comme cela est fait avec un TabControl tout normal.

Où est-ce que j'aurais pù louper un truc ?

aKheNAtHoN

6 réponses

Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Ok, pour d'autres qui se posent la même question, j'ai ma réponse dans cet article :

http://www.codeproject.com/KB/cpp/CustomContainerControl.aspx

Bonne prog,
aKheNAtHoN
Messages postés
14790
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
155
Bonjour

D'après ton message, je suppose que tu es en 2003 ou 2002 (donc .NET 1).

Essaye en mettant une proptiété du type du tableau désiré, exemple :
Si ta collection spécifie des String :

Public property LstString as StringCollection 'comme ta prop actuelle

End property

public propertyTblString as string()
Get
    mLstString.Getarray
end get
set(byval pValue as string())
    mLstString.AddRange (pValue)
end set
end property

Je pense que ça devrai fonctionner.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Bonjour Henry,

Merci pour ton aide, mais malheureusement ta proposition ne correspond pas vraiement à ce que je voulais. (Je suis sous 2005) et c'est pas un tableau d'array mais un tableau d'un autre usercontrol - c'est un tabpannel.

Du coup pour la collection, j'ai besoin d'intercepter l'appel du ADD par exemple, donc ta soluce me parait pas correspondre. Je vais néamoins essayer de voir si cela passe et si je peux "bidouiller" autour.

aKheNAtHoN
Messages postés
14790
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
155
Bonjour

dsl, mais mes connaissances en .NET1 sont minces (je suis surtout .NET2), mais c'est un sujet (le collection de controles pour remplacer les Index de VB6) qui a été souvent évoqué, je ne puis t'aider d'avantage.

La solution que je te proposait était destinée à forcer l'EDI à utiliser un tableau au lieu d'une collection.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Mais la collection passe nikel en mode execution ou bien même en mode design. C'est juste que VS2005 génére un fichier .design.vb qui lui instancie les contrôles et là aussi c'est nikel, mais il ne les rajoutte pas au niveau de la collection du coup entre le mode design (c'est ok) et le mode execution je perds les données préremplies dans le tableau. Un exemple pour être plus concret :

Le fonctionnement normal d'un tablist au niveau du designer c'est :

Dim tablist .... as new ...
Dim Tab1 ... as new ....
Dim Tab2 ... as new ...

Me.TabList. .... définition ...
Me.TabList.Items.Add(Tab1)
Me.TabList.Items.Add(Tab2)
.....

Moi c'est au niveau de Items.Add il le fait pas sur mon controle et du coup ma collection est vide. Je continue les recherches mais pour une chose aussi  petite c'est désolant de bloquer dessus pendant 2/3 jours.

aKheNAtHoN
Messages postés
14790
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
155
Bonjour

Sinon tu peux les ajouter dans le Form_Load.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site