Bonjour à tous
Je dois souvent (comme beaucoup sûrement ) pour certains projets, créer des nouveaux composants, hors là je bute sur un problème dont j'entends parler un peu partout, je trouve parfois des "idées de solution" mais c'est vachement complexe pour ce que c'est, et en plus, ça ne marche jamais chez moi
J'explique...
Je créé un composant, et je veux, simplement, lui ajouter une Collection en propriété...
Comme pour une comboBox par exemple, sa propriété Items...
Jusque là pas de soucis, je me créé une class Collection, et je l'applique et j'en fais une propriété sur mon composant
Ca marche !
Sauf que ...
En Design-Time, quand j'ajoute des objets à ma collection, que je fais OK et que je reviens dans ma collection... je la retrouve vide... idem quand je compile (run-time donc)...
La seule solution pour que mes items restent, serait d'ajouter les items à la collection par code... Mais c'est pas pratique du tout, surtout dans mon cas J'ai vraiment besoin que tout se fasse par l'IDE.
Donc concrètement...:
: Comment faire une sérialisation d'une collection, pour qu'elle garde en mémoire les items que j'ai ajouté dans l'IDE... même au moment de la compilation !
Le code...
Ma collection:
Comme vous le voyez j'ai essayé d'y mettre un Serializable mais ca change queudal...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 [Serializable] public class MaCollection : CollectionBase { public MaCollection() : base() {} public int Add(MonItem item) { return List.Add(item); } public void Insert(int index, MonItem item) { List.Insert(index, item); } public void Remove(MonItem item) { List.Remove(item); } public bool Contains(MonItem item) { return List.Contains(item); } public int IndexOf(MonItem item) { return List.IndexOf(item); } public void CopyTo(MonItem[] array, int index) { List.CopyTo(array, index); } public MonItem this[int index] { get { return (MonItem)List[index]; } set { List[index] = value; } } }
Et dans le composant:
Là aussi j'ai tout essayé, stocker les items de la Collec dans un array au lieu de faire directement _items = value, mais rien n'y fait...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private MaCollection _items = new MaCollection(); public MaCollection Items { get { return _items; } set { _items = value; } }
Voilà j'espère que vous pourrez m'aider...
Merci d'avance
Ingham
Partager