UserCrontrol + ArrayList

Résolu
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012 - 13 févr. 2008 à 16:57
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012 - 14 févr. 2008 à 14:58
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

cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
14 févr. 2008 à 14:58
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
3
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
14 févr. 2008 à 09:20
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
0
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
14 févr. 2008 à 11:05
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
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
14 févr. 2008 à 11:13
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
14 févr. 2008 à 12:29
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
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
14 févr. 2008 à 13:06
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
0
Rejoignez-nous