Hvordan sortere en Listview av kolonner

C # er et programmeringsspråk som brukes av Microsoft til å lage dataprogrammer. Listevisningen i din C # program lar deg vise kolonnene i programmeringen slik at du kan redigere noen bugs. Den IComparer grensesnitt er den mest vanlige programmet kompilator brukes på Microsoft Windows-operativsystemet. Du kan bruke dette til å implementere kolonnene i programmet via listevisningen funksjonen. Du trenger ikke å være dataekspert for å implementere dette inn i programmet. Du kan gjøre det selv.

Bruksanvisning

1 Åpne din C # program og deretter opprette et nytt prosjekt fra "New" -ikonet øverst i programmet. Tilsett Listview kontroll fra menyen øverst i programmet og deretter størrelsen på prosjektet, slik at du har nok plass til teksten.

2 Lim inn denne koden på din "Class" alternativet på formen:

privat ListViewColumnSorter lvwColumnSorter;

3 Lim denne koden inn i "Constructor" delen av skjemaet etter "InitializeComponent» vises:

// Opprett en forekomst av en Listview kolonne sorter og tilordne den

// Til Listview kontroll. lvwColumnSorter = new ListViewColumnSorter (); this.listView1.ListViewItemSorter = lvwColumnSorter;

4 Lim denne koden inn i "Load" i form:

ColumnHeader columnheader; // Brukes for å lage kolonneoverskriftene.

ListViewItem listviewitem; // Brukes for å lage Listview elementer.

// Kontroller at visningen er satt til å vise detaljer.

listView1.View = View.Details;

// Lag noen Listview elementer som består av fornavn og etternavn. listviewitem = new ListViewItem ( "John"); listviewitem.SubItems.Add ( "Smith"); this.listView1.Items.Add (listviewitem);

listviewitem = new ListViewItem ( "Bob"); listviewitem.SubItems.Add ( "Taylor"); this.listView1.Items.Add (listviewitem);

listviewitem = new ListViewItem ( "Kim"); listviewitem.SubItems.Add ( «Zimmerman"); this.listView1.Items.Add (listviewitem);

listviewitem = new ListViewItem ( "Olivia"); listviewitem.SubItems.Add ( "Johnson"); this.listView1.Items.Add (listviewitem);

// Lag noen kolonneoverskriftene for dataene. columnheader = new ColumnHeader (); columnheader.Text = "fornavn"; this.listView1.Columns.Add (columnheader);

columnheader = new ColumnHeader ();

columnheader.Text = "etternavn"; this.listView1.Columns.Add (columnheader);

// Loop gjennom og størrelse hver kolonneoverskriften for å passe kolonneoverskriften teksten. foreach (ColumnHeader ch i this.listView1.Columns)

{

ch.Width = -2;

}

5 Lim denne koden inn i "ColumnClick" på listevisningen kontroll:

ColumnHeader columnheader; // Brukes for å lage kolonneoverskriftene.

ListViewItem listviewitem; // Brukes for å lage Listview elementer.

// Kontroller at visningen er satt til å vise detaljer.

listView1.View = View.Details;

// Lag noen Listview elementer som består av fornavn og etternavn. listviewitem = new ListViewItem ( "John"); listviewitem.SubItems.Add ( "Smith"); this.listView1.Items.Add (listviewitem);

listviewitem = new ListViewItem ( "Bob"); listviewitem.SubItems.Add ( "Taylor"); this.listView1.Items.Add (listviewitem);

listviewitem = new ListViewItem ( "Kim"); listviewitem.SubItems.Add ( «Zimmerman"); this.listView1.Items.Add (listviewitem);

listviewitem = new ListViewItem ( "Olivia"); listviewitem.SubItems.Add ( "Johnson"); this.listView1.Items.Add (listviewitem);

// Lag noen kolonneoverskriftene for dataene. columnheader = new ColumnHeader (); columnheader.Text = "fornavn"; this.listView1.Columns.Add (columnheader);

columnheader = new ColumnHeader ();

columnheader.Text = "etternavn"; this.listView1.Columns.Add (columnheader);

// Loop gjennom og størrelse hver kolonneoverskriften for å passe kolonneoverskriften teksten. foreach (ColumnHeader ch i this.listView1.Columns)

{

ch.Width = -2;

}

6 Klikk på "Add Class" på prosjektet menyen og deretter lime denne koden inn i standardvalget:

bruker System.Collections;

bruker System.Windows.Forms;

/// <Summary>

/// Denne klassen er en implementering av "IComparer 'grensesnitt.

/// </ Summary>

public class ListViewColumnSorter: IComparer

{

/// &lt;summary>

/// Angir kolonnen som skal sorteres

/// & Lt; / summary>

private int ColumnToSort;

/// & Lt; summary>

/// Angir rekkefølgen for å sortere (dvs. "Stigende").

/// & Lt; / summary>

privat sortering OrderOfSort;

/// & Lt; summary>

/// Sak insensitive comparer objekt

/// & Lt; / summary>

privat CaseInsensitiveComparer ObjectCompare;

/// & Lt; summary>

/// Klasse konstruktør. Initialiserer ulike elementene

/// & Lt; / summary>

offentlig ListViewColumnSorter ()

{

// Initial kolonnen til '0'

ColumnToSort = 0;

// Initialsorteringsrekkefølgen til "none"

OrderOfSort = SortOrder.None;

// Initialiser CaseInsensitiveComparer objektet

ObjectCompare = new CaseInsensitiveComparer ();

}

/// & Lt; summary>

/// Denne metoden er arvet fra IComparer grensesnitt. Den sammenligner de to objektene sendes ved hjelp av en små bokstaver sammenligning.

/// & Lt; / summary>

/// & Lt; param name = "x"> Første objekt å bli sammenlignet & lt; / param>

/// & Lt; param name = "y"> Second objekt å bli sammenlignet & lt; / param>

/// & Lt; avkastning> Resultatet av sammenligningen. "0" hvis lik, negativ hvis 'x' er mindre enn y og positiv hvis 'x' er større enn y & lt; / avkastning>

public int Sammenlign (objekt x, objekt y)

{

int compareResult;

ListViewItem listviewX, listviewY;

// Cast gjenstandene å bli sammenlignet ListViewItem gjenstander

listviewX = (ListViewItem) x;

listviewY = (ListViewItem) y;

// Sammenligne de to elementene

compareResult = ObjectCompare.Compare (listviewX.SubItems [ColumnToSort] .text, listviewY.SubItems [ColumnToSort] .text);

// Beregn korrekt returverdi basert på objekt sammenligning

if (OrderOfSort == SortOrder.Ascending)

{

// Stigende form er valgt, kommer tilbake normalt resultat av sammenligningsoperasjon

tilbake compareResult;

}

else if (OrderOfSort == SortOrder.Descending)

{

// Synkende sortering er valgt, kommer tilbake negativt resultat på sammenligningsoperasjon

avkastning (-compareResult);

}

ellers

{

// Return "0" for å indikere at de er like

returnere 0;

}

}

/// & Lt; summary>

/// Får eller setter nummeret på kolonnen til å bruke sorterings drift (Defaults til "0").

/// & Lt; / summary>

public int SortColumn

{

sett

{

ColumnToSort = verdi;

}

{

tilbake ColumnToSort;

}

}

/// & Lt; summary>

/// Får eller setter rekkefølgen på sorterings å søke (for eksempel "stigende" eller "synkende").

/// & Lt; / summary>

offentlig sortering Bestill

{

sett

{

OrderOfSort = verdi;

}

{

tilbake OrderOfSort;

}

}

}

7 Redd bygge fra menyen øverst og deretter kjøre programmet. Klikk på kolonneoverskriftene i listevisning kontrollen for å åpne kolonnene.