Moomoon07
Messages postés223Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 5 mai 2014
-
20 sept. 2006 à 15:00
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
27 sept. 2006 à 10:02
Salut !
J'aurais besoin d'un coup de pouce.
J'ai déja posté une question hier pour organiser un datagrid contenant des nombres.
Mais aujourd'hui ce sont des dates que j'ai besoin d'organiser.
J'ai donc un datagridview qui contient des dates (sous forme de chaine de 10 caractères) dans sa première colonne. J'ai besoin de les avoir dans l'ordre contre-chronologique (de la plus récente à la plus ancienne).
quelqu'un peut t'il me faire un exemple avec dataGridView.Sort(Icomparer)
Un exemple me suffira pour comprendre je pense, parce que mon avis est que c'est très mal expliqué dans le msdn. J'ai rien saisi.
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 20 sept. 2006 à 17:23
tu dois écrire une classe qui implémente IComparer
private class MaClasseComparer : IComparer
{
}
en clickant sur IComparer, un petit trait rouge apparait dessous (ou bleu, je sais plus, du moins si tu utilise visual studio).
cela va te créer les méthodes a implémenter (la méthode compare uniquement).
cette méthode.
cette méthode doit renvoyer une valeur qui obéis aux critères suivant :
Inférieure à zéro
x est inférieur à y.
Zéro
x est égal à y.
Supérieure à zéro
x est supérieur à y.
ensuite, a toi de créer un constructeur qui te convient afin de pouvoir instancier l'objet que tu passeras en paramètre de la méthode sort.
par exemple tu veux que ton comparer puisse comparer deux int (tout simplement) :
private class MonComparer : IComparer
{
public MonComparer()
{}
public int Compare(object x, object y)
{
//retourne la différence entre x et y, donc un nombre qui corresponde aux critères cités ci dessus.
return x - y;
}
}
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 21 sept. 2006 à 13:39
pour implémenter l'interface, les noms de méthodes doivent etre RIGOUREUSEMENT identiques a ceux définits dans linterface...en bref, "CompareDate" est a remplacer par "Compare"....tu ne crée pas ta propre méthode, tu implémente la méthode définie dans l'interface....
@Bidou : pourquoi plutot Comparer <>? il ne va pas utiliser la généricité vu que sa comparaison est assez spécifique...ca a un autre intéret que la généricité et implémenter une seule fois linterface pour plusieurs algorithmes de comparaison?
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 21 sept. 2006 à 15:24
leprov>
class MonComparer : IComparer => class MonComparer : IComparer<DateTime>
public int Compare(object x, object y) => public int Compare(DateTime dt1, DateTime dt2)