Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
DataGridView Las filas, las columnas y los encabezados pueden cambiar el tamaño como resultado de muchas apariciones diferentes. En la tabla siguiente se muestran estas apariciones.
| Ocurrencia | Descripción |
|---|---|
| Cambio de tamaño del usuario | Los usuarios pueden realizar ajustes de tamaño arrastrando o haciendo doble clic en filas, columnas o divisores de encabezado. |
| Control de redimensionamiento | En el modo de relleno de columnas, los anchos de columna cambian cuando cambia el ancho del control; Por ejemplo, cuando el control está acoplado a su formulario primario y el usuario cambia el tamaño del formulario. |
| Cambio de valor de celda | En los modos de ajuste de tamaño automático basados en contenido, los tamaños cambian para ajustarse a los nuevos valores de presentación. |
| Llamada al método | El cambio de tamaño basado en contenido mediante programación permite realizar ajustes de tamaño oportunistas en función de los valores de celda en el momento de la llamada al método. |
| Configuración de la propiedad | También puede establecer valores específicos de alto y ancho. |
De forma predeterminada, el redimensionamiento por parte del usuario está habilitado, el ajuste automático de tamaño está deshabilitado y los valores de celda más anchos que sus columnas quedan cortados.
En la tabla siguiente se muestran escenarios que se pueden usar para ajustar el comportamiento predeterminado o para usar opciones de ajuste de tamaño específicas para lograr efectos concretos.
| Escenario | Implementación |
|---|---|
| Use el modo de relleno de columnas para mostrar datos de tamaño similar en un número relativamente pequeño de columnas que ocupan todo el ancho del control sin mostrar la barra de desplazamiento horizontal. | Establezca la propiedad AutoSizeColumnsMode en Fill. |
| Use el modo de relleno de columnas con valores de visualización de tamaños variables. | Establezca la propiedad AutoSizeColumnsMode en Fill. Inicialice los anchos de columna relativos estableciendo las propiedades de columna FillWeight o llamando al método de control AutoResizeColumns después de rellenar el control con datos. |
| Use el modo de relleno de columnas con valores de importancia variable. | Establezca la propiedad AutoSizeColumnsMode en Fill. Establezca valores grandes MinimumWidth para las columnas que siempre deben mostrar algunos de sus datos o usar una opción de ajuste de tamaño que no sea el modo de relleno para columnas específicas. |
| Use el modo de relleno de columnas para evitar mostrar el fondo del control. | Establezca la AutoSizeMode propiedad de la última columna en Fill y use otras opciones de ajuste de tamaño para las otras columnas. Si las otras columnas usan demasiado espacio disponible, establezca la MinimumWidth propiedad de la última columna. |
| Muestra una columna de ancho fijo, como un icono o una columna de identificador. | Establézcalo AutoSizeMode en None y Resizable en False para la columna. Inicialice su ancho estableciendo la Width propiedad o llamando al método de control AutoResizeColumn después de rellenar el control con datos. |
| Ajuste los tamaños automáticamente cada vez que cambie el contenido de la celda para evitar el recorte y optimizar el uso del espacio. | Establezca una propiedad de ajuste de tamaño automático en un valor que represente un modo de ajuste de tamaño basado en contenido. Para evitar una penalización de rendimiento al trabajar con grandes cantidades de datos, use un modo de ajuste de tamaño que calcule solo las filas mostradas. |
| Ajuste los tamaños para que se adapten a los valores de las filas mostradas y así evitar la degradación del rendimiento al trabajar con muchas filas. | Utiliza los valores adecuados de enumeración para el modo de tamaño con ajuste automático o programado. Para ajustar los tamaños para que se ajusten a los valores de las filas recién mostradas mientras se desplaza, llame a un método de cambio de tamaño en un Scroll controlador de eventos. Para personalizar el cambio de tamaño al hacer doble clic del usuario de manera que solo los valores de las filas mostradas determinen los nuevos tamaños, utilice un método de cambio de tamaño en un controlador de eventos RowDividerDoubleClick o ColumnDividerDoubleClick. |
| Ajuste los tamaños de las celdas solo en momentos puntuales para evitar penalizaciones de rendimiento o permitir que el usuario ajuste el tamaño. | Llame a un método de cambio de tamaño basado en contenido en un controlador de eventos. Por ejemplo, utilice el evento DataBindingComplete para inicializar tamaños después del enlace, y maneje el evento CellValidated o CellValueChanged para ajustar los tamaños y compensar las modificaciones del usuario o los cambios en un origen de datos enlazado. |
| Ajustar las alturas de las filas para el contenido de celdas con varias líneas. | Asegúrese de que los anchos de columna sean adecuados para mostrar párrafos de texto y utilice el ajuste de tamaño automático o mediante programación de filas basadas en contenido para ajustar las alturas. Asegúrese también de que las celdas con contenido de varias líneas se muestren usando un valor de estilo de celda WrapMode de True. Normalmente, usará un modo de ajuste de tamaño de columna automático para mantener los anchos de columna o establecerlos en anchos específicos antes de ajustar los altos de fila. |
Cambio de tamaño con el ratón
De forma predeterminada, los usuarios pueden cambiar el tamaño de las filas, las columnas y los encabezados que no usan un modo de ajuste de tamaño automático en función de los valores de celda. Para evitar que los usuarios cambien el tamaño con otros modos, como el modo de relleno de columnas, establezca una o varias de las propiedades siguientes DataGridView :
También puede impedir que los usuarios cambien el tamaño de las filas o columnas individuales estableciendo sus Resizable propiedades. De forma predeterminada, el Resizable valor de la propiedad se basa en el AllowUserToResizeColumns valor de propiedad de las columnas y el valor de propiedad AllowUserToResizeRows de las filas. Sin embargo, si explícitamente establece Resizable a True o False, el valor especificado anula el valor de control para esa fila o columna. Establezca Resizable en NotSet para restaurar la herencia.
Dado que NotSet restaura la herencia de valores, la Resizable propiedad nunca devolverá un NotSet valor a menos que la fila o columna no se haya agregado a un DataGridView control . Si necesita determinar si el valor de la propiedad Resizable de una fila o columna es heredado, examine su propiedad State. Si el State valor incluye la ResizableSet marca , el valor de la Resizable propiedad no se hereda.
Ajuste de tamaño automático
Hay dos tipos de ajuste de tamaño automático en el DataGridView control: modo de relleno de columnas y ajuste de tamaño automático basado en contenido.
El modo de relleno de columnas hace que las columnas visibles del control rellenen el ancho del área de visualización del control. Para obtener más información sobre este modo, vea Modo de relleno de columnas en el control DataGridView de formularios Windows Forms.
También puede configurar filas, columnas y encabezados para ajustar automáticamente sus tamaños para ajustarse a su contenido de celda. En este caso, el ajuste de tamaño se produce cada vez que cambia el contenido de la celda.
Nota:
Si mantiene valores de celda en una caché de datos personalizada mediante el modo virtual, el ajuste de tamaño automático se produce cuando el usuario edita un valor de celda, pero no se produce al modificar un valor almacenado en caché fuera de un CellValuePushed controlador de eventos. En este caso, llame al método UpdateCellValue para forzar que el control actualice la visualización de celdas y aplique los modos de ajuste de tamaño automático actuales.
Si el ajuste automático basado en contenido está habilitado solo para una dimensión( es decir, para filas, pero no columnas, o para columnas, pero no filas) y WrapMode también está habilitado, el ajuste de tamaño también se produce siempre que cambie la otra dimensión. Por ejemplo, si las filas pero no las columnas están configuradas para el ajuste de tamaño automático y WrapMode están habilitadas, los usuarios pueden arrastrar divisores de columna para cambiar el ancho de una columna y las alturas de fila se ajustarán automáticamente para que el contenido de la celda todavía se muestre completamente.
Si configura filas y columnas para el ajuste de tamaño automático basado en contenido y WrapMode está habilitado, el DataGridView control ajustará los tamaños siempre que cambie el contenido de la celda y usará una relación ideal de alto a ancho de celda al calcular nuevos tamaños.
Para configurar el modo de ajuste de tamaño para encabezados y filas y para columnas que no invalidan el valor de control, establezca una o varias de las siguientes DataGridView propiedades:
Para invalidar el modo de ajuste de tamaño de columna del control para una columna individual, establezca su AutoSizeMode propiedad en un valor distinto de NotSet. El modo de ajuste de tamaño de una columna está determinado realmente por su InheritedAutoSizeMode propiedad. El valor de esta propiedad se basa en el valor de la propiedad de la columna AutoSizeMode a menos que ese valor sea NotSet, en cuyo caso se hereda el valor del control AutoSizeColumnsMode.
Use el cambio de tamaño automático basado en contenido con precaución al trabajar con grandes cantidades de datos. Para evitar penalizaciones de rendimiento, use los modos de ajuste de tamaño automático que calculan los tamaños basados solo en las filas mostradas en lugar de analizar todas las filas del control. Para obtener el máximo rendimiento, use el cambio de tamaño mediante programación para que pueda cambiar el tamaño en momentos específicos, como inmediatamente después de cargar nuevos datos.
Los modos de ajuste de tamaño automático basados en contenido no afectan a las filas, columnas o encabezados que se han ocultado al establecer la propiedad de fila o columna Visible o las propiedades del control RowHeadersVisible o ColumnHeadersVisible a false. Por ejemplo, si una columna está oculta después de que se ajuste automáticamente a un valor de celda grande, la columna oculta no cambiará su tamaño si se elimina la fila que contiene el valor de celda grande. El ajuste automático de tamaño no se produce cuando cambia la visibilidad, por lo que cambiar la propiedad de columna Visible a true no obligará a recalcular su tamaño en función de su contenido actual.
El cambio de tamaño basado en contenido mediante programación afecta a las filas, columnas y encabezados, independientemente de su visibilidad.
Redimensionamiento programático
Cuando el ajuste de tamaño automático está deshabilitado, puede establecer mediante programación el ancho exacto o alto de filas, columnas o encabezados mediante las siguientes propiedades:
También puede cambiar el tamaño de filas, columnas y encabezados mediante programación para ajustarse a su contenido mediante los métodos siguientes:
Estos métodos cambiarán el tamaño de las filas, columnas o encabezados una vez en lugar de configurarlos para cambiar el tamaño continuo. Los nuevos tamaños se calculan automáticamente para mostrar todo el contenido de la celda sin recortar. Sin embargo, al cambiar el tamaño de las columnas que tienen valores de la propiedad InheritedAutoSizeMode de Fill, los anchos calculados basados en el contenido se utilizan para ajustar proporcionalmente los valores de la propiedad de la columna FillWeight, y los anchos de las columnas se calculan según estas nuevas proporciones para que todas las columnas rellenen el área visible disponible del control.
El cambio de tamaño mediante programación es útil para evitar penalizaciones de rendimiento con cambio de tamaño continuo. También resulta útil proporcionar tamaños iniciales para filas, columnas y encabezados que se pueden cambiar de tamaño por parte del usuario, así como para el modo de ajuste de ancho de columnas.
Normalmente, utilizará los métodos de cambio de tamaño programáticos en momentos específicos. Por ejemplo, puede cambiar el tamaño de todas las columnas mediante programación inmediatamente después de cargar datos, o puede cambiar el tamaño de una fila específica mediante programación después de modificar un valor de celda determinado.
Personalización del comportamiento de ajuste de tamaño basado en contenido
Puede personalizar los comportamientos de ajuste de tamaño al trabajar con tipos derivados de celda DataGridView, fila y columna, reemplazando los métodos DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight, o DataGridViewColumn.GetPreferredWidth, o llamando a sobrecargas de métodos de cambio de tamaño protegidos en un control derivado DataGridView. Las sobrecargas protegidas del método de cambio de tamaño están concebidas para trabajar en pares y así conseguir una proporción ideal entre el alto y el ancho de la celda, evitando celdas que sean demasiado anchas o demasiado altas. Por ejemplo, si llama a la AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) sobrecarga del AutoResizeRows método y pasa un valor de false para el Boolean parámetro , la sobrecarga calculará los altos y anchos ideales para las celdas de la fila, pero ajustará solo los alturas de fila. A continuación, debe llamar al AutoResizeColumns método para ajustar los anchos de columna al ideal calculado.
Opciones de ajuste de tamaño basadas en contenido
Las enumeraciones usadas por las propiedades y métodos de dimensionado tienen valores similares para el dimensionado basado en contenido. Con estos valores, puede limitar las celdas que se usan para calcular los tamaños preferidos. Para todas las enumeraciones de tamaño, los valores con nombres que hacen referencia a celdas mostradas limitan sus cálculos a las celdas de las filas mostradas. Excluir filas es útil para evitar una penalización de rendimiento cuando se trabaja con una gran cantidad de filas. También puede restringir los cálculos a los valores de celda en celdas de encabezado o no encabezadas.
Consulte también
- DataGridView
- DataGridView.AllowUserToResizeColumns
- DataGridView.AllowUserToResizeRows
- DataGridView.ColumnHeadersHeightSizeMode
- DataGridView.RowHeadersWidthSizeMode
- DataGridViewBand.Resizable
- DataGridView.AutoSizeColumnsMode
- DataGridView.AutoSizeRowsMode
- DataGridViewColumn.AutoSizeMode
- DataGridViewColumn.InheritedAutoSizeMode
- DataGridView.RowHeadersWidth
- DataGridView.ColumnHeadersHeight
- DataGridViewRow.Height
- DataGridViewColumn.Width
- DataGridView.AutoResizeColumn
- DataGridView.AutoResizeColumns
- DataGridView.AutoResizeColumnHeadersHeight
- DataGridView.AutoResizeRow
- DataGridView.AutoResizeRows
- DataGridView.AutoResizeRowHeadersWidth
- DataGridViewAutoSizeRowMode
- DataGridViewAutoSizeRowsMode
- DataGridViewAutoSizeColumnMode
- DataGridViewAutoSizeColumnsMode
- DataGridViewColumnHeadersHeightSizeMode
- DataGridViewRowHeadersWidthSizeMode
- Redimensionamiento de columnas y filas en el control DataGridView de Windows Forms
- Modo de relleno de columnas en el control de DataGridView de Windows Forms
- Cómo: Configurar los modos de tamaño del control DataGridView de Windows Forms
.NET Desktop feedback