Exportar (0) Imprimir
Expandir todo
Personas que lo han encontrado útil: 1 de 2 - Valorar este tema

ListView (Clase)

Actualización: noviembre 2007

Representa un control de vista de lista de Windows, el cual muestra una colección de elementos que se pueden ver mediante una de cuatro vistas distintas.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
[ComVisibleAttribute(true)]
[DockingAttribute(DockingBehavior.Ask)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
public class ListView : Control
/** @attribute ComVisibleAttribute(true) */
/** @attribute DockingAttribute(DockingBehavior.Ask) */
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */
public class ListView extends Control
public class ListView extends Control

Un control ListView permite mostrar una lista de elementos con texto y, de forma opcional, con un icono que identifique el tipo de elemento. Por ejemplo, la lista de archivos del Explorador de Windows es similar en apariencia a un control ListView. Muestra una lista de los archivos y carpetas seleccionados actualmente en el árbol. Cada archivo y cada carpeta muestra un icono asociado para ayudar a identificar el tipo de archivo o carpeta. La clase ListViewItem representa un elemento dentro de un control ListView. Los elementos que se muestran en la lista se pueden presentar en una de cinco vistas distintas. Se pueden mostrar como iconos grandes, como iconos pequeños o como iconos pequeños en una lista vertical. Los elementos también pueden tener subelementos que contengan información relacionada con el elemento primario. La vista de detalles permite mostrar el elemento y sus subelementos en una cuadrícula con encabezados de columna que identifican la información que se presenta en un subelemento. La vista en mosaico, que tiene una disponibilidad limitada tal como se describe más abajo, permite mostrar el elemento y sus subelementos como un mosaico que contiene un icono grande junto a la información textual. ListView admite la selección sencilla y múltiple. La característica de selección múltiple permite a los usuarios hacer su selección en una lista de elementos de forma similar a un control ListBox. Además, el usuario puede activar elementos seleccionados para realizar una tarea. Por ejemplo, se puede utilizar un control ListView para mostrar una lista de archivos que la aplicación puede abrir y utilizar. El usuario puede seleccionar los archivos que desea abrir y, a continuación, hacer doble clic en ellos para activar los elementos y abrir los archivos en la aplicación. El ListView también puede mostrar casillas, mediante la propiedad CheckBoxes, para permitir al usuario activar los elementos sobre los que desea realizar una acción. El control ListView se puede utilizar de diversas formas. Por ejemplo, para mostrar información de una aplicación, una base de datos o un archivo de texto. El ListView también se puede utilizar para obtener información suministrada por el usuario, como la selección de un conjunto de archivos para su procesamiento.

ListView ofrece un gran número de propiedades que proporcionan flexibilidad a la apariencia y al comportamiento. La propiedad View permite cambiar la forma en la que se muestran los elementos. Las propiedades LargeImageList, SmallImageList y StateImageList permiten especificar los objetos ImageList que contienen las imágenes que se muestran para los elementos y, en el caso del StateImageList, las casillas que se muestran cuando la propiedad CheckBoxes está establecida en true. Para determinar los elementos activados, puede utilizar la propiedad CheckedItems para obtener acceso a la colección ListView.CheckedListViewItemCollection. La propiedad Columns permite obtener acceso al ListView.ColumnHeaderCollection, el cual almacena los encabezados de columna que se muestran cuando la propiedad View del control está establecida en Details. Los elementos se agregan y se quitan del ListView mediante la propiedad Items. La propiedad Items permite obtener acceso al ListView.ListViewItemCollection del control, el cual proporciona métodos para manipular los elementos del control. Si desea permitir al usuario editar el texto de un elemento, puede utilizar la propiedad LabelEdit. Cuando el control contiene un gran número de elementos, a veces es más sencillo para el usuario verlos de forma ordenada. Se puede utilizar la propiedad Sorting para ordenar los elementos alfabéticamente. También se puede personalizar totalmente la apariencia de un control ListView. Para ello, establezca el valor de la propiedad OwnerDraw en true y controle uno o varios de los siguientes eventos: DrawItem, DrawSubItem y DrawColumnHeader.

Muchas de las propiedades del control ListView se utilizan cuando la propiedad View está establecida en Details. La propiedad AllowColumnReorder permite al usuario del control ListView volver a configurar el orden de las columnas en tiempo de ejecución. La propiedad FullRowSelect permite seleccionar un elemento y sus subelementos en lugar de sólo el elemento. Para mostrar líneas de cuadrícula en la vista de detalles que identifiquen los límites de los elementos y subelementos en el ListView, se puede utilizar la propiedad GridLines. La propiedad HeaderStyle permite especificar el tipo de encabezado de columna que se va a mostrar.

Un control ListView puede funcionar en modo virtual, donde los objetos ListViewItem se generan dinámicamente en vez de almacenarse en la colección de Items. Esto puede ser útil para ocuparse de listas muy largas o cuyo contenido cambie frecuentemente. Para habilitar el modo virtual, establezca la propiedad VirtualMode en true y controle los eventos RetrieveVirtualItem, CacheVirtualItems y SearchForVirtualItem.

Además de las distintas propiedades disponibles para un control ListView, existen métodos y eventos que la aplicación puede utilizar para proporcionar funciones adicionales al ListView. Los métodos BeginUpdate y EndUpdate permiten mejorar el rendimiento cuando se agregan muchos elementos a un control ListView, impidiendo que se vuelva a dibujar el control cada vez que se agrega un elemento. Si el control ListView muestra elementos y subelementos, es posible que desee proporcionar alguna funcionalidad cuando el usuario haga clic con el botón secundario del mouse en un subelemento. Para determinar el elemento en cuyo subelemento se está haciendo clic, se puede utilizar el método GetItemAt. Al realizar la validación de los elementos después de que el usuario los haya editado, es posible que desee mostrar un elemento específico al usuario para que lo cambie. Se puede llamar al método EnsureVisible para garantizar que el elemento específico se encuentre en el área visible del control.

Si la propiedad LabelEdit está establecida en true, se pueden realizar tareas como la validación del texto editado antes y después de cambiarlo mediante la creación de un controlador de eventos para los eventos BeforeLabelEdit y AfterLabelEdit. Para realizar tareas como la apertura de un archivo o la presentación de un cuadro de diálogo para editar un elemento mostrado en un ListView, puede crear un controlador de eventos para el evento ItemActivate. Si permite al usuario ordenar los elementos de un ListView al hacer clic en un encabezado de columna, puede crear un controlador de eventos para el evento ColumnClick que realice la ordenación. Cuando la propiedad CheckBoxes está establecida en true, puede determinar cuándo se ha producido un cambio en el estado de activación de un elemento mediante el control del evento ItemCheck.

También puede establecer una imagen de fondo para ListView con la propiedad BackgroundImage. La aplicación debe tener STAThreadAttribute en su método Main para mostrar correctamente la imagen de fondo para el control ListView. Además, si un control ListView con una imagen de fondo se hospeda en Internet Explorer, para garantizar que la imagen de fondo se muestra correctamente hay que especificar la versión 6.0 de comctl32.dll como el ensamblado dependiente en el archivo de manifiesto de aplicación.

s2edxtd5.alert_note(es-es,VS.90).gifNota:

Establecer la propiedad Cursor para un control ListView no tiene ningún efecto en el aspecto del cursor en las versiones 1.1 y anteriores de .NET Framework.

Windows XP y Windows Server 2003 incluyen tres características que mejoran el control ListView cuando la aplicación llama al método Application.EnableVisualStyles: la vista en mosaico, la agrupación y la marca de inserción.

La vista en mosaico permite equilibrar la información gráfica y textual mostrando el texto de los elementos y subelementos situados junto a iconos grandes. Establezca el valor de la propiedad View en View.Tile para habilitar este comportamiento.

La característica de agrupación permite agrupar visualmente los elementos en categorías relacionadas. Utilice la propiedad Groups para agregar objetos ListViewGroup al control ListView cuando desee habilitar esta característica. Para deshabilitar temporalmente la característica, establezca el valor de la propiedad ShowGroups en false.

La característica de marca de inserción permite cambiar la posición de los elementos mediante una operación de arrastrar y colocar, e incluye comentarios visuales para indicar las ubicaciones de colocación. Utilice el objeto ListViewInsertionMark recuperado mediante la propiedad InsertionMark para mostrar la marca de inserción.

Estas funciones sólo están disponibles en Windows XP y Windows Server 2003. En las plataformas anteriores, el código relacionado con estas funciones no tiene efecto, la vista en mosaico tiene la misma apariencia que la vista de icono grande, y la marca de inserción y los grupos de elementos no se muestran. En algunos casos, quizás desee incluir código que determine si están disponibles estas funciones y proporcionar una funcionalidad alternativa cuando no lo estén. La misma biblioteca que proporciona la característica de temas del sistema operativo ofrece estas funciones. Para comprobar la disponibilidad de esta biblioteca, llame a la sobrecarga del método FeatureSupport.IsPresent(Object) y pase el valor OSFeature.Themes.

En la tabla siguiente se muestran algunos de los miembros de ListView y las vistas en las que son válidos.

Miembro de ListView

Vista

Propiedad Alignment

SmallIcon O bien LargeIcon

Propiedad AutoArrange

SmallIcon O bien LargeIcon

Método AutoResizeColumn

Details

Propiedad Columns

Details O bien Tile

Evento DrawSubItem.

Details

Método FindItemWithText

Details, List o Tile

Método FindNearestItem

SmallIcon O bien LargeIcon

Método GetItemAt

Details O bien Tile

Propiedad Groups

Todas las vistas excepto List

Propiedad HeaderStyle

Details

Propiedad InsertionMark

LargeIcon, SmallIcon o Tile

En el ejemplo de código siguiente se crea un control ListView con tres objetos ListViewItem determinados y tres objetos ListViewItem.ListViewSubItem especificados para cada elemento. Asimismo se crean objetos ColumnHeader para mostrar los subelementos en la vista de detalles. En el ejemplo de código también se crean dos objetos ImageList para proporcionar imágenes a los objetos ListViewItem. Estos objetos ImageList se agregan a las propiedades LargeImageList y SmallImageList. Para crear el control ListView, en el ejemplo se utilizan las siguientes propiedades:

Este ejemplo exige que el código se haya agregado con anterioridad a un objeto Form y que se llame al método creado en el ejemplo desde el constructor u otro método del formulario. También requiere que las imágenes denominadas MySmallImage1, MySmallImage2, MyLargeImage1 y MyLargeImage2 se encuentren en el directorio raíz de la unidad C.

		private void CreateMyListView()
		{
			// Create a new ListView control.
			ListView listView1 = new ListView();
			listView1.Bounds = new Rectangle(new Point(10,10), new Size(300,200));

			// Set the view to show details.
			listView1.View = View.Details;
			// Allow the user to edit item text.
			listView1.LabelEdit = true;
			// Allow the user to rearrange columns.
			listView1.AllowColumnReorder = true;
			// Display check boxes.
			listView1.CheckBoxes = true;
			// Select the item and subitems when selection is made.
			listView1.FullRowSelect = true;
			// Display grid lines.
			listView1.GridLines = true;
			// Sort the items in the list in ascending order.
			listView1.Sorting = SortOrder.Ascending;
            			
			// Create three items and three sets of subitems for each item.
			ListViewItem item1 = new ListViewItem("item1",0);
			// Place a check mark next to the item.
			item1.Checked = true;
			item1.SubItems.Add("1");
			item1.SubItems.Add("2");
			item1.SubItems.Add("3");
			ListViewItem item2 = new ListViewItem("item2",1);
			item2.SubItems.Add("4");
			item2.SubItems.Add("5");
			item2.SubItems.Add("6");
			ListViewItem item3 = new ListViewItem("item3",0);
			// Place a check mark next to the item.
			item3.Checked = true;
			item3.SubItems.Add("7");
			item3.SubItems.Add("8");
			item3.SubItems.Add("9");

			// Create columns for the items and subitems.
			listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left);
			listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
			listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left);
			listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center);

			//Add the items to the ListView.
            		listView1.Items.AddRange(new ListViewItem[]{item1,item2,item3});

			// Create two ImageList objects.
			ImageList imageListSmall = new ImageList();
			ImageList imageListLarge = new ImageList();

			// Initialize the ImageList objects with bitmaps.
			imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage1.bmp"));
			imageListSmall.Images.Add(Bitmap.FromFile("C:\\MySmallImage2.bmp"));
			imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage1.bmp"));
			imageListLarge.Images.Add(Bitmap.FromFile("C:\\MyLargeImage2.bmp"));

			//Assign the ImageList objects to the ListView.
			listView1.LargeImageList = imageListLarge;
			listView1.SmallImageList = imageListSmall;

			// Add the ListView to the control collection.
			this.Controls.Add(listView1);
		}


private void CreateMyListView()
{
    // Create a new ListView control.
    ListView listView1 = new ListView();
    listView1.set_Bounds(new Rectangle(new Point(10, 10), 
        new Size(300, 200)));

    // Set the view to show details.
    listView1.set_View(View.Details);

    // Allow the user to edit item text.
    listView1.set_LabelEdit(true);

    // Allow the user to rearrange columns.
    listView1.set_AllowColumnReorder(true);

    // Display check boxes.
    listView1.set_CheckBoxes(true);

    // Select the item and subitems when selection is made.
    listView1.set_FullRowSelect(true);

    // Display grid lines.
    listView1.set_GridLines(true);

    // Sort the items in the list in ascending order.
    listView1.set_Sorting(SortOrder.Ascending);

    // Create three items and three sets of subitems for each item.
    ListViewItem item1 = new ListViewItem("item1", 0);

    // Place a check mark next to the item.
    item1.set_Checked(true);

    item1.get_SubItems().Add("1");
    item1.get_SubItems().Add("2");
    item1.get_SubItems().Add("3");

    ListViewItem item2 = new ListViewItem("item2", 1);
    item2.get_SubItems().Add("4");
    item2.get_SubItems().Add("5");
    item2.get_SubItems().Add("6");

    ListViewItem item3 = new ListViewItem("item3", 0);

    // Place a check mark next to the item.
    item3.set_Checked(true);

    item3.get_SubItems().Add("7");
    item3.get_SubItems().Add("8");
    item3.get_SubItems().Add("9");

    // Create columns for the items and subitems.
    listView1.get_Columns().Add("Item Column", -2, 
        HorizontalAlignment.Left);
    listView1.get_Columns().Add("Column 2", -2, HorizontalAlignment.Left);
    listView1.get_Columns().Add("Column 3", -2, HorizontalAlignment.Left);
    listView1.get_Columns().Add("Column 4", -2, HorizontalAlignment.Center);

    //Add the items to the ListView.
    listView1.get_Items().AddRange(new ListViewItem[] { item1, item2, 
        item3 });

    // Create two ImageList objects.
    ImageList imageListSmall = new ImageList();
    ImageList imageListLarge = new ImageList();

    // Initialize the ImageList objects with bitmaps.
    imageListSmall.get_Images().Add(Bitmap.FromFile(
        "C:\\MySmallImage1.bmp"));
    imageListSmall.get_Images().Add(Bitmap.FromFile(
        "C:\\MySmallImage2.bmp"));
    imageListLarge.get_Images().Add(Bitmap.FromFile(
        "C:\\MyLargeImage1.bmp"));
    imageListLarge.get_Images().Add(Bitmap.FromFile(
        "C:\\MyLargeImage2.bmp"));

    //Assign the ImageList objects to the ListView.
    listView1.set_LargeImageList(imageListLarge);
    listView1.set_SmallImageList(imageListSmall);

    // Add the ListView to the control collection.
    this.get_Controls().Add(listView1);
} //CreateMyListView


Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.