Persistance des items d'une collection au moment du design
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
30 juin 2008 à 21:52
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 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.
A voir également:
Persistance des items d'une collection au moment du design
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 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?
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 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...
Vous n’avez pas trouvé la réponse que vous recherchez ?