List<> Controler les add et remove [Résolu]

cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 7 déc. 2006 à 09:34 - Dernière réponse : cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention
- 7 déc. 2006 à 11:49
Salut,





J'ai une une list generic et j'aimerai contrôler les add et remove,
soit en dérivant ma classe soit en poussant un evenement sur
suppression dans ma liste ou suppression... mais je sais pas comment
faire.

Avez vous un tuto sur le sujet ou un breve exemple?

Merci

NB : Pourquoi ca? Pourajouter ou supprimer dans une table de données, ceci avec un propertygrid qui doit passer ces méthodes la pour ajouter ou supprimer un élément d'une collection.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 7 déc. 2006 à 11:09
3
Merci
MERCI!!!

En faite, c'est sur IList<T> qu'il faut implémenter... et la c'est le top (IList est au dessus et contient ICollection)

Merci cs_Yxion 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Yxion
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 7 déc. 2006 à 09:42
0
Merci
tu peux hériter la classe List<> et surcharger les méthodes Add, Remove, AddRange...
tu pourras ainsi ajouter des évènements :)

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 7 déc. 2006 à 09:54
0
Merci
Désolé si ma réponse est bete,
 mais les méthodes add, Remove .. ne sont pas virtuels.
Commenter la réponse de cs_Yxion
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 7 déc. 2006 à 09:55
0
Merci
comme sebmafate, et je rajouterais que tes evenements devraient se baser sur le modele validating par exemple, c'est a dire que tu ferais une surcharge du style :

protected override void Add(T Item)
{
OnAdding(new AddEventArgs);
base.Add(Item);
}

Et dans ton event adding, un argument cancel qui te permette de valider ou non l'ajout (enfin un truc du genre quoi ^^)
Commenter la réponse de leprov
cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 7 déc. 2006 à 10:04
0
Merci
public



class



ListeReduct
<T> :

List
<T>

where
T:

IReduct

{


 public
ListeReduction(){}


 protected



override



void
Add(T Item)
 {


    base
.Add(Item);
 }
}

J'ai une erreur et ca viens du fait que add n'est pas virtuel
Commenter la réponse de cs_Yxion
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 7 déc. 2006 à 10:19
0
Merci
tu as toujours la possibilité de faire ceci :

public new int Add(T item) {
   return base.Add(item);
}

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 7 déc. 2006 à 10:39
0
Merci
Le truc, c'est que j'utilise un propertygrid qui gere l'objet "PropertyProd".
Cet objet contient une propriété "ListReduct" (juste au dessus), et je veux lancer quelque chose quand j'ajoute ou supprime avec le gestionnaire de collections du propertygrid.... mais meme en masquant les Add, AddRange, Insert, InsertRange, j'ai aucune de ces méthode qui se lance (test avec un MessageBox)

Mais je m'y prends sans doute mal (si je m'y prennais bien, ca marcherai :) )
Commenter la réponse de cs_Yxion
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 7 déc. 2006 à 10:46
0
Merci
ok...
ce que tu peux faire, c'est implémenté l'interface ICollection<T>

Tu auras ainsi tout controle sur ta collection.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Commenter la réponse de sebmafate
cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 7 déc. 2006 à 11:49
0
Merci
En faite, j'apporte correction :

Pour le propertygrid, il faut simplement dériver de IEnumerable<T> :

Voila, ce que j'ai fait :

public
class
ListeReduction<T> :
List<T>,
IEnumerable
where T:
IReductions{

#region IEnumerable Membres

IEnumerator
IEnumerable.GetEnumerator(){

foreach (T p
in
this){

MessageBox.Show(
"Opération");

yield
return p;}

}

#endregion

}
Commenter la réponse de cs_Yxion

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.