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
{
/// <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;
}
få
{
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;
}
få
{
tilbake OrderOfSort;
}
}
}
7 Redd bygge fra menyen øverst og deretter kjøre programmet. Klikk på kolonneoverskriftene i listevisning kontrollen for å åpne kolonnene.