Persistance des items d'une collection au moment du design

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 30 juin 2008 à 21:52
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 1 juil. 2008 à 17:36
Bonsoir,
J'ai créé un contrôle ayant comme propriété une collection d'objets. Mon problème est que les items contenus dans cette collection ne sont pas persistants au moment du design. Autrement dit, lorsque on ajoute des items à la collection au moment du design, aucun code n'est créer par le designer pour ajouter ces items à la collection.

Voici mon contrôle:
Public Class MyControl
    Inherits Control

    Public ReadOnly Property Items() As List(Of Panel)
        Get
            Return _Items
        End Get
    End Property
    Private _Items As New List(Of Panel)

End Class

Lorsque on ajoute un item à la collection (toujours au moment du design), le designer va déclarer l'item (il s'agit d'un control) mais ne va pas l'ajouter à la liste:
Friend WithEvents Panel1 As System.Windows.Forms.Panel
Me.Panel1.Location = New System.Drawing.Point(0, 0)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(200, 100)
Me.Panel1.TabIndex = 0
Me.MyControl1.Items.Add(Me.Panel1)                      ' Ceci n'est pas ajouté !!!

Pourtant ça fonctionne très bien avec les autres contrôles "liste". Par exemple pour la ListView, le designer rajoute ceci:
Me.ListView1.Items.AddRange(New System.Windows.Forms.ListViewItem() {ListViewItem1, ListViewItem2, ListViewItem3})

Quelqu'un sait-il comment résoudre ce problème?

Remarque:
Si je ne déclare pas Items de MyControl Readonly, ça me fait :
- Hier soir, le designer m'a généré du drole de code qui produisait une "SyntaxError"
- Ajourd'hui, j'ai un message "Panel n'est pas marqué comme étant sérializable".
J'avais déjà fais un contrôle ayant une collection d'objet, et j'avais rencontré le même problème. Mais j'avais alors remarqué que si on ne déclarait pas la propriété Items Readonly et que les items qu'elle contenait était sérialisable en XML, les données était persistantes au moment du design (le designer stoquait les données dans les ressources de l'application). Seulement, aujourd'hui mes Items ne sont plus sérialisables en XML puisque il s'agit de contrôles.

5 réponses

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
1 juil. 2008 à 11:33
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
1 juil. 2008 à 16:51
Mouais... pas vraiment de rapport, même si il est vrai que les contrôles ajoutés à la liste Controls sont  persistants (logique, c'est le fondement même du desiger de VS)

Mais comment cela se fait-il? Pourquoi Controls est-il persistant mais pas les autres listes?
0
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
1 juil. 2008 à 17:09
Il te faut rajouter une collection de Panel peut être ?

Essaye cette voie :

PublicClass MyControl
Inherits Control



Sub
New()


Dim mCol AsNew List(OfPanel)



End
Sub


EndClass


 
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
1 juil. 2008 à 17:27
C'est ce que j'ai, une collection de panels :
Private _Items As New List(Of Panel)

Ce que je veux, c'est rajouter des Panels à la collection au moment du design, au moment de l'exécution comme tu le montre il est clair qu'il y a aucun soucis...
0

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

Posez votre question
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
1 juil. 2008 à 17:36
Ha désolé ... je sais pas trop

Peut être faut il developper une Function Add ou une Function

Default Property
0
Rejoignez-nous