c# .net winforms listview width

C#ListView Ancho de columna Auto



.net winforms (6)

¿Cómo puedo configurar el ancho de la columna del control de la vista de lista de CA # winforms en automático? Algo como ancho = -1 / -2?


Creo que el autor estaba buscando un método equivalente a través del IDE que generaría el código detrás y se aseguraría de que todos los parámetros estuvieran en su lugar, etc. Lo encontré de MS:

Crear controladores de eventos en el Diseñador de Windows Forms

Procedente de un fondo VB, esto es lo que estaba buscando, aquí está la versión breve para el clic adverso:

  1. Haga clic en el formulario o control para el que desea crear un controlador de eventos.
  2. En la ventana Propiedades, haga clic en el botón Eventos
  3. En la lista de eventos disponibles, haga clic en el evento para el que desea crear un controlador de eventos.
  4. En el cuadro a la derecha del nombre del evento, escriba el nombre del controlador y presione ENTRAR

Esta solución primero cambiará el tamaño de las columnas en función de los datos de columna, si el ancho redimensionado es menor que el tamaño del encabezado, cambiará el tamaño de las columnas para, al menos, ajustarse al encabezado. Esta es una solución bastante fea, pero funciona.

lstContacts.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); colFirstName.Width = (colFirstName.Width < 60 ? 60 : colFirstName.Width); colLastName.Width = (colLastName.Width < 61 ? 61 : colLastName.Width); colPhoneNumber.Width = (colPhoneNumber.Width < 81 ? 81 : colPhoneNumber.Width); colEmail.Width = (colEmail.Width < 40 ? 40 : colEmail.Width);

lstContacts es el ListView. colFirstName es una columna, donde 60 es el ancho requerido para ajustarse al título. Etc.


Expandiendo un poco la respuesta de Fredrik, si desea establecer el ancho de cambio de tamaño automático de la columna sobre la marcha, por ejemplo: estableciendo el ancho del auto-tamaño de la primera columna en 70:

myListView.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.None); myListView.Columns[0].Width = 70; myListView.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);


Hice un programa que borró y volvió a llenar mi lista de vista varias veces. Por alguna razón, cada vez que agregué columnas con ancho = -2, encontré un problema con la primera columna demasiado larga. Lo que hice para arreglar esto fue crear este método.

private void ResizeListViewColumns(ListView lv) { foreach(ColumnHeader column in lv.Columns) { column.Width = -2; } }

Lo mejor de este método es que puedes colocarlo en cualquier lugar para cambiar el tamaño de todas tus columnas. Simplemente pase su ListView .


Usted dio la respuesta: -2 personalizará automáticamente la columna a la longitud del texto en el encabezado de la columna, -1 se autoescribirá al ítem más largo en la columna. Todo de acuerdo con MSDN . Sin embargo, tenga en cuenta que en el caso de -1, tendrá que establecer el ancho de la columna después de agregar los elementos. Por lo tanto, si agrega un nuevo elemento, también deberá asignar la propiedad de ancho de la columna (o columnas) que desea autosizar según los datos en el control ListView .


Utilizar esta:

yourListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); yourListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

de here