Tecnología

Inicio

Cómo ordenar un control ListView por columnas

C # es un lenguaje de programación utilizado por Microsoft para crear aplicaciones informáticas. La vista de lista en su programa en C # le permite ver las columnas de la programación para que pueda editar cualquier error. La interfaz IComparer es el compilador de programa más común que se utiliza en el sistema operativo Microsoft Windows. Usted puede usar esto para poner en práctica las columnas en su programa a través de la función de vista de lista. Usted no tiene que ser un experto en informática para implementar esto en su programa. Puedes hacerlo tú mismo.

Instrucciones

1 Abra su programa en C # y luego crear un nuevo proyecto desde el icono "Nuevo" en la parte superior del programa. Agregue el control ListView en el menú en la parte superior del programa y luego dimensionar el proyecto para que tenga suficiente espacio para el texto.

2 Pega este código en su opción de "clase" de la forma:

lvwColumnSorter ListViewColumnSorter privada;

3 Pega este código en la parte de "constructor" de la forma después de las aparecerá el mensaje "InitializeComponent":

// Crear una instancia de un clasificador de columna ListView y asignarla

// Para el control ListView. lvwColumnSorter = new ListViewColumnSorter (); this.listView1.ListViewItemSorter = lvwColumnSorter;

4 Pega este código en la opción "Cargar" en la forma:

columnheader ColumnHeader; // Se usa para crear encabezados de columna.

ListViewItem ListViewItem; // Se usa para crear objetos de vista de lista.

// Asegúrese de que la vista está configurado para mostrar detalles.

listView1.View = View.Details;

// Crear algunos artículos de vista de lista que consta de nombres y apellidos. ListViewItem = new ListViewItem ( "Juan"); 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);

// Crear algunos títulos de las columnas de los datos. columnheader = new ColumnHeader (); columnheader.Text = "Nombre"; this.listView1.Columns.Add (columnheader);

columnheader = new ColumnHeader ();

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

// Recorrer y el tamaño de cada encabezado de columna para ajustar el texto del encabezado de columna. foreach (ch ColumnHeader en this.listView1.Columns)

{

ch.Width = -2;

}

5 Pega este código en la opción "ColumnClick" en el control listview:

columnheader ColumnHeader; // Se usa para crear encabezados de columna.

ListViewItem ListViewItem; // Se usa para crear objetos de vista de lista.

// Asegúrese de que la vista está configurado para mostrar detalles.

listView1.View = View.Details;

// Crear algunos artículos de vista de lista que consta de nombres y apellidos. ListViewItem = new ListViewItem ( "Juan"); 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);

// Crear algunos títulos de las columnas de los datos. columnheader = new ColumnHeader (); columnheader.Text = "Nombre"; this.listView1.Columns.Add (columnheader);

columnheader = new ColumnHeader ();

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

// Recorrer y el tamaño de cada encabezado de columna para ajustar el texto del encabezado de columna. foreach (ch ColumnHeader en this.listView1.Columns)

{

ch.Width = -2;

}

6 Haga clic en la opción "Agregar clase" en el menú proyecto y luego pega este código en la opción por defecto:

utilizando System.Collections;

using System.Windows.Forms;

/// <Summary>

/// Esta clase es una implementación de la interfaz de la 'IComparer'.

/// </ Summary>

ListViewColumnSorter clase pública: IComparer

{

/// &lt;summary>

/// Especifica la columna que ser resuelto

/// & Lt; / summary>

ColumnToSort int privado;

/// & Lt; summary>

/// Especifica el orden en el que se ordenan (es decir, 'ascendente').

/// & Lt; / summary>

OrderOfSort SortOrder privada;

/// & Lt; summary>

/// Caso insensible objeto comparador

/// & Lt; / summary>

ObjectCompare CaseInsensitiveComparer privada;

/// & Lt; summary>

/// Constructor de la clase. Inicializa diversos elementos

/// & Lt; / summary>

ListViewColumnSorter público ()

{

// Inicializar la columna a '0'

ColumnToSort = 0;

// Inicializar el orden de clasificación de "ninguna"

OrderOfSort = SortOrder.None;

// Inicializar el objeto CaseInsensitiveComparer

ObjectCompare = new CaseInsensitiveComparer ();

}

/// & Lt; summary>

/// Este método se hereda de la interfaz IComparer. Se comparan los dos objetos pasados ​​utilizando un caso de comparación insensible.

/// & Lt; / summary>

/// & Lt; param name = "x"> En primer objeto a comparar & lt; / param>

/// & Lt; param name = "y"> Segundo objeto a comparar & lt; / param>

/// & Lt; retornos> El resultado de la comparación. "0" si es igual, negativo si 'x' es inferior a 'y' y positivo si 'x' es mayor que 'y' & lt; / devoluciones>

Comparar public int (x objeto, objeto y)

{

int compareResult;

ListViewItem listviewX, listviewY;

// Fundido los objetos para ser comparado con objetos ListViewItem

listviewX = (ListViewItem) x;

listviewY = (ListViewItem) y;

// Comparación de los dos elementos

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

// Calcular el valor de retorno correcto basado en la comparación de objetos

si (== OrderOfSort SortOrder.Ascending)

{

// Se selecciona Orden creciente, resultado de la devolución normal de operación de comparación

volver compareResult;

}

else if (OrderOfSort == SortOrder.Descending)

{

// Se selecciona en orden descendente, vuelva resultado negativo de la comparación de la operación

retorno (-compareResult);

}

más

{

// Retorno '0' para indicar que son iguales

return 0;

}

}

/// & Lt; summary>

/// Obtiene o establece el número de la columna a la que aplicar la operación de clasificación (por defecto a '0').

/// & Lt; / summary>

public int sortColumn

{

conjunto

{

ColumnToSort = valor;

}

obtener

{

volver ColumnToSort;

}

}

/// & Lt; summary>

/// Obtiene o establece el orden de clasificación de aplicar (por ejemplo, "ascendente" o "descendente").

/// & Lt; / summary>

Orden público SortOrder

{

conjunto

{

OrderOfSort = valor;

}

obtener

{

volver OrderOfSort;

}

}

}

7 Guarde la acumulación en el menú en la parte superior y luego ejecutar el programa. Haga clic en los encabezados de columna en la vista de lista de control para abrir las columnas.