Hi,
ich habe ne Dateiliste von 1.jpg - 20.jpg und lade diese in eine ListView. Allerdings wird da angezeigt:
1.jpg
10.jpg
11.jpg
...
Der Windows-Explorer zeigt die aber korrekt sortiert an.
1.jpg
2.jpg
3.jpg
...
Wie kann ich das sortieren wie im Explorer?
Hallo -acid-,
darüber, welche der Sortierungen korrekt ist, lässt sich trefflich streiten. Aber die Sortierung des ListViews kannst du mit ListView.ListViewItemSorter beeinflussen.
HTH
herbivore
ja darüber läßt sich streiten g
aber ich finde sie so besser.
ja soweit war ich schon, nur hat msdn das im beispiel so komisch erklärt, das ich nicht wüsste wie ich das auf meine bedürfnisse anpasse.
// ColumnClick event handler.
private void ColumnClick(object o, ColumnClickEventArgs e){
// Set the ListViewItemSorter property to a new ListViewItemComparer object.
this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
// Call the sort method to manually sort the column based on the ListViewItemComparer implementation.
listView1.Sort();
}
Hallo -acid-,
in dem Beispiel ist die folgende Klasse entscheiden, die du selbst implementieren musst (da es so wie ich das sehe dafür keinen Standard-Sortierter gibt):
// Implements the manual sorting of items by columns.
class ListViewItemComparer : IComparer {
private int col;
public ListViewItemComparer() {
col=0;
}
public ListViewItemComparer(int column) {
col=column;
}
public int Compare(object x, object y) {
// hier muss stattdessen deine Sortierung rein:
return String.Compare(((ListViewItem)x).SubItems[col].Text,
((ListViewItem)y).SubItems[col].Text);
}
}
Das einzige, was du da noch ändern musst, ist statt String.Compare deinen Vergleich, bei dem 1.jpg vor 10.jpg kommt, auszuimplementieren.
HTH
herbivore
Das was der Explorer von WinXP mach nennt sich "natural sort order", also natürliche Sortierung. Unter diesem Stichwort solltest du in Google fertige Algorithmen finden, die du ggf. nur noch nach C# portieren brauchst.
natural sort order... jo das wars, guter einfall. habe aber keinen algorithmus gefunden der mir bei der sortierung hilft.
(anscheinend können andre google besser als ich verwenden g)
hier hab ich evtl. noch was interessantes:
(ansonsten finde ich immer nur die php natsort function)
Original von -acid-
hier hab ich evtl. noch was interessantes:
Der Source kommt mir bekannt vor, IIRC habe ich den schonmal gesehen. Ich wollte das auch mal nach C# portieren, bin dazu aber leider bisher nicht gekommen... 😦
(ansonsten finde ich immer nur die php natsort function)
Dann gibt bei Google einfach mal "-php" mit an, dann lässt er das weg. 😉
hab ich auch schon. bringt mich aber nicht weiter....
Siehe Natürliche Sortierung implementieren ("img2.jpg" vor "img10.jpg")