Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Sortierung der ListView Items
-acid-
myCSharp.de - Member



Dabei seit:
Beiträge: 885
Herkunft: Hessen

Themenstarter:

Sortierung der ListView Items

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
-acid-
myCSharp.de - Member



Dabei seit:
Beiträge: 885
Herkunft: Hessen

Themenstarter:

beantworten | zitieren | melden

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();
      }
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
bitstream
myCSharp.de - Member



Dabei seit:
Beiträge: 189
Herkunft: Hannover

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
-acid-
myCSharp.de - Member



Dabei seit:
Beiträge: 885
Herkunft: Hessen

Themenstarter:

beantworten | zitieren | melden

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*)
private Nachricht | Beiträge des Benutzers
-acid-
myCSharp.de - Member



Dabei seit:
Beiträge: 885
Herkunft: Hessen

Themenstarter:

beantworten | zitieren | melden

hier hab ich evtl. noch was interessantes:

(ansonsten finde ich immer nur die php natsort function)
Attachments
private Nachricht | Beiträge des Benutzers
bitstream
myCSharp.de - Member



Dabei seit:
Beiträge: 189
Herkunft: Hannover

beantworten | zitieren | melden

Zitat
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... :-(
Zitat
(ansonsten finde ich immer nur die php natsort function)

Dann gibt bei Google einfach mal "-php" mit an, dann lässt er das weg. ;-)
private Nachricht | Beiträge des Benutzers
-acid-
myCSharp.de - Member



Dabei seit:
Beiträge: 885
Herkunft: Hessen

Themenstarter:

beantworten | zitieren | melden

hab ich auch schon. bringt mich aber nicht weiter....

Moderationshinweis von herbivore (21.12.2010 - 12:09)

Siehe Natürliche Sortierung implementieren ("img2.jpg" vor "img10.jpg")

private Nachricht | Beiträge des Benutzers