Persistance des items d'une collection au moment du design

Signaler
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016
-
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

Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016

Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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?
Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016

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


 
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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...
Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016

Ha désolé ... je sais pas trop

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

Default Property