Come ordinare una lista per Colonne

January 16

C # è un linguaggio di programmazione utilizzato da Microsoft per creare applicazioni informatiche. ListView nel vostro programma C # consente di visualizzare le colonne nella vostra programmazione in modo da poter modificare eventuali bug. L'interfaccia IComparer è il compilatore programma più comunemente usato sul sistema operativo Microsoft Windows. È possibile utilizzare questo per implementare le colonne nel programma tramite la funzione ListView. Non c'è bisogno di essere un esperto di computer per implementare questo nel vostro programma. È possibile farlo da soli.

istruzione

1 Aprire il programma C # e quindi creare un nuovo progetto da l'icona "Nuovo" nella parte superiore del programma. Aggiungere il controllo ListView dal menu nella parte superiore del programma e quindi dimensionare il progetto in modo da avere abbastanza spazio per il testo.

2 Incolla questo codice nella tua opzione "Class" del modulo:

privato ListViewColumnSorter lvwColumnSorter;

3 Incolla questo codice nella parte "Costruttore" della forma dopo le appare il prompt "InitializeComponent":

// Crea un'istanza di una selezionatrice colonna di ListView e assegnarla

// Al controllo ListView. lvwColumnSorter = new ListViewColumnSorter (); this.listView1.ListViewItemSorter = lvwColumnSorter;

4 Incolla questo codice nella opzione "Carica" ​​nella forma:

ColumnHeader ColumnHeader; // Utilizzato per la creazione di intestazioni delle colonne.

ListViewItem ListViewItem; // Utilizzato per la creazione di elementi ListView.

// Assicurarsi che la vista è impostato per visualizzare i dettagli.

listView1.View = View.Details;

// Creazione di alcuni elementi ListView, comprensivi di nomi e cognomi. 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);

// Creare alcune intestazioni delle colonne per i dati. ColumnHeader = new ColumnHeader (); columnheader.Text = "Nome"; this.listView1.Columns.Add (ColumnHeader);

ColumnHeader = new ColumnHeader ();

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

// Loop attraverso e le dimensioni di ogni colonna per adattare il testo di intestazione di colonna. foreach (ch ColumnHeader in this.listView1.Columns)

{

ch.Width = -2;

}

5 Incolla questo codice nella opzione "ColumnClick" sul controllo ListView:

ColumnHeader ColumnHeader; // Utilizzato per la creazione di intestazioni delle colonne.

ListViewItem ListViewItem; // Utilizzato per la creazione di elementi ListView.

// Assicurarsi che la vista è impostato per visualizzare i dettagli.

listView1.View = View.Details;

// Creazione di alcuni elementi ListView, comprensivi di nomi e cognomi. 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);

// Creare alcune intestazioni delle colonne per i dati. ColumnHeader = new ColumnHeader (); columnheader.Text = "Nome"; this.listView1.Columns.Add (ColumnHeader);

ColumnHeader = new ColumnHeader ();

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

// Loop attraverso e le dimensioni di ogni colonna per adattare il testo di intestazione di colonna. foreach (ch ColumnHeader in this.listView1.Columns)

{

ch.Width = -2;

}

6 Selezionare l'opzione "Aggiungi classe" nel menu progetto e quindi incollare questo codice nel l'opzione di default:

using System.Collections;

using System.Windows.Forms;

/// <Summary>

/// Questa classe è una implementazione dell'interfaccia del 'IComparer'.

/// </ Summary>

Classe ListViewColumnSorter pubblico: IComparer

{

/// &lt;summary>

/// Specifica la colonna da ordinare

/// & Lt; / summary>

private int ColumnToSort;

/// & Lt; summary>

/// Specifica l'ordine in cui l'ordinamento (ad esempio 'Crescente').

/// & Lt; / summary>

privato SortOrder OrderOfSort;

/// & Lt; summary>

/// Caso oggetto di confronto insensibile

/// & Lt; / summary>

privato CaseInsensitiveComparer ObjectCompare;

/// & Lt; summary>

/// Costruttore della classe. Inizializza vari elementi

/// & Lt; / summary>

ListViewColumnSorter pubblico ()

{

// Inizializza la colonna a '0'

ColumnToSort = 0;

// Inizializza l'ordine di 'none'

OrderOfSort = SortOrder.None;

// Inizializzare l'oggetto CaseInsensitiveComparer

ObjectCompare = new CaseInsensitiveComparer ();

}

/// & Lt; summary>

/// Questo metodo viene ereditato dall'interfaccia IComparer. Esso mette a confronto i due oggetti passati utilizzando un caso confronto insensibile.

/// & Lt; / summary>

/// & Lt; param name = "x"> primo oggetto da comparare & lt; / param>

/// & Lt; param name = "y"> Secondo oggetto da comparare & lt; / param>

/// & Lt; returns> Il risultato del confronto. "0" se uguali, negativo se 'x' è inferiore a 'y' e positivo se 'x' è maggiore di 'y' & lt; / returns>

public int Confronta (oggetto x, y oggetto)

{

int compareResult;

ListViewItem listviewX, listviewY;

// Cast gli oggetti da rispetto agli oggetti ListViewItem

listviewX = (ListViewItem) x;

listviewY = (ListViewItem) y;

// Confrontare le due voci

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

// Calcola il valore di ritorno corretto sulla base di confronto oggetto

if (OrderOfSort == SortOrder.Ascending)

{

// È selezionato ascendente, tornare normale risultato del confronto funzionamento

tornare compareResult;

}

else if (OrderOfSort == SortOrder.Descending)

{

// È selezionato ordinamento decrescente, tornare risultato negativo di confrontare il funzionamento

ritorno (-compareResult);

}

altro

{

// Return '0' per indicare che sono uguali

return 0;

}

}

/// & Lt; summary>

/// Ottiene o imposta il numero della colonna a cui applicare l'operazione di ordinamento (di default a '0').

/// & Lt; / summary>

public int SortColumn

{

impostato

{

ColumnToSort = valore;

}

ottenere

{

tornare ColumnToSort;

}

}

/// & Lt; summary>

/// Ottiene o imposta l'ordine di selezione da applicare (per esempio, 'Crescente' o 'decrescente').

/// & Lt; / summary>

pubblico SortOrder Order

{

impostato

{

OrderOfSort = valore;

}

ottenere

{

tornare OrderOfSort;

}

}

}

7 Salvare la build dal menu in alto e quindi eseguire il programma. Fare clic sulle intestazioni delle colonne nel controllo ListView per aprire le colonne.