Est-il possible de trier une collection TreeView
en utilisant IComparer<T>
et non IComparer
? Après tout, ce sont tous des valeurs TreeNode
, n'est-ce pas?Trier Winforms TreeView d'une manière sûre de type?
1
A
Répondre
2
Si vous voulez dire par l'intermédiaire de TreeViewNodeSorter
, alors il doit s'agir d'un IComparer
(en bref, il s'agit de génériques antérieurs). Vous pouvez écrire quelque chose qui Cales, mais il est sans doute pas la peine ...
public static class ComparerWrapper
{ // extension method, so you can call someComparer.AsBasicComparer()
public static IComparer AsBasicComparer<T>(this IComparer<T> comparer)
{
return comparer as IComparer
?? new ComparerWrapper<T>(comparer);
}
}
sealed class ComparerWrapper<T> : IComparer
{
private readonly IComparer<T> inner;
public ComparerWrapper(IComparer<T> inner)
{
if (inner == null) throw new ArgumentNullException("inner");
this.inner = inner;
}
int IComparer.Compare(object x, object y)
{
return inner.Compare((T)x, (T)y);
}
}
1
Une chose qui m'a trébuché était que IComparer vient de System.Collections alors que IComparer vient de System.Collections.Generic .
Je ne disposions que
using System.Collections.Generic;
et devenais une erreur de compilation:
Cannot implicitly convert type 'MyApp.NodeSorter' to 'System.Collections.IComparer'. An explicit conversion exists (are you missing a cast?)
La solution était d'ajouter
using System.Collections;
Questions connexes
- 1. Trier TreeView par clé
- 2. WinForms TreeView
- 3. ASP.NET TreeView trier
- 4. PHP: trier de manière intelligente?
- 5. Manière sûre de coder une valeur de cookie dans C#
- 6. Manière sûre de changer la priorité d'un NSOperation
- 7. Comment étendre un TFieldDef de manière simple et sûre?
- 8. Renvoyer des pointeurs de manière sûre pour les threads
- 9. Manière sûre de supprimer des éléments d'une liste dans Perl?
- 10. Navigateur CSS manière sûre d'appliquer une bordure de rayon?
- 11. Comment annuler un WinForms TreeView ExpandAll?
- 12. Manière sûre d'effacer en continu d'un fichier std :: vector?
- 13. TreeView dans Winforms et le problème de mise au point
- 14. C# WinForms Détecter la visibilité réelle de TreeView
- 15. Comment convertir une chaîne hexadécimale en entier non signé 64bit (uint64_t) de manière rapide et sûre?
- 16. Les événements dans WinForms sont-ils lancés de manière asynchrone?
- 17. Comment faire pour trier une liste de manière générique
- 18. Version sûre de Path.Combine
- 19. Publication sûre
- 20. Navigation de type "bread-crumb" pour Winforms
- 21. Contrôle de type QuickWatch pour .NET WinForms?
- 22. Meilleure façon d'auto-dimensionner horizontalement un contrôle WinForms TreeView?
- 23. Comment remplir les nœuds d'un TreeView? (Winforms C#)
- 24. TreeView Winforms si un nœud peut être vu?
- 25. Comment trier un DataView de manière insensible à la casse?
- 26. JXTable écouter pour trier et trier une table similaire de la même manière
- 27. C# pourquoi sizeof est dangereux et comment obtenir la taille d'une structure de manière sûre?
- 28. Manière sûre d'itérer sur un tableau ou un dictionnaire et de supprimer des entrées?
- 29. Puis-je envelopper le texte de nœud dans un WinForms TreeView
- 30. comment trier chaîne comme nombre dans datagridview dans WinForms
Merci Marc. Est-il au moins possible d'avoir une méthode de tri personnalisée pour les trier. Je suppose que ce n'est pas possible en raison du contrôleur TreeView. –
Par ce que je veux dire un tri personnalisé que je peux appeler qui ne va pas jeter les choses de l'objet à TreeNode. –