2011-04-25 133 views

Respuesta

19

sólo tiene que ir a las propiedades de la cuadrícula de datos =>

y luego a la sección Diseño =>

AutoSizeColumnsMode establecerlo en Rellenar ...

+6

this.ApplicationObjectRecords.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; es para evitar el espacio de columna no utilizado, no el espacio de fila. – zytham

+1

@Thomas VT: Gracias, me salvaste el día. – user1298925

+0

Lo hiciste bien. – CodeRunner

2

primer lugar, su forma tendría que ser lo suficientemente grande para el DataGridView para expandir y mostrar todas las columnas. En la captura de pantalla, no parece lo suficientemente amplia. Puede establecer el tamaño de la vista de cuadrícula de datos manualmente, pero es raro que conozca el ancho exacto de cada columna en el momento del diseño porque no sabe cuánto habrá en cada columna en tiempo de ejecución. Por ejemplo, su columna de descripción de facturas podría tener cadenas que varían en longitud.

Lo que normalmente hago en casos como el suyo es poner un control de divisor en el formulario. El cuadro de texto en la parte superior y el botón Importar facturas irían en el panel superior del control del divisor, y el DataGridView iría en el panel inferior. Luego, configure la propiedad Dock del DataGridView para llenar el panel inferior del control del divisor. De esta forma, cuando el usuario cambie el tamaño del formulario, DataGridView crecerá/disminuirá con él.

Puede controlar aún más la forma en que aparecen las columnas configurando la propiedad DataGridView.AutoResizeRows.

Simplemente dándole esto como una opción, no estoy al tanto de ninguna manera de hacer que la grilla se redimensione automáticamente a los datos que se muestran. Es posible que pueda calcular el alto/ancho de las filas y luego cambiar manualmente el tamaño de la cuadrícula en el código, pero me aseguraré de que realmente necesite ese requisito primero.

3

Para autoSize las columnas para ajustar los datos (a lo ancho) y luego autoSize la forma para adaptarse a la gridview (a lo ancho), utilice el siguiente código:

foreach (DataGridViewColumn column in dataGridView1.Columns) 
       column.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; 

this.Width = dataGridView1.Width + 100; 

donde DataGridView1 es el nombre de el Datagridview en este ejemplo, y this se refiere a la instancia del formulario. El 100 es una constante para la cantidad de píxeles que desea más ancho que la vista de cuadrícula de datos. (Nota: es posible que desee un poco de ancho de comprobación para asegurarse de que la forma y el gridview datos no son más anchas que la pantalla del usuario)

Para autoSize DataGridView para adaptarse a las filas (altura-wise) y luego autoSize la forma de encajar el gridview (altura-wise), utilice el siguiente código:

int totalRowHeight = dataGridView1.ColumnHeadersHeight; 

foreach (DataGridViewRow row in dataGridView1.Rows) 
    totalRowHeight += row.Height; 

dataGridView1.Height = totalRowHeight; 
this.Height = dataGridView1.Height + 100; 

donde DataGridView1 es el nombre de la Datagridview en este ejemplo, y this se refiero a la instancia de la forma. El 100 es una constante para la cantidad de píxeles que desea más alta que la vista de cuadrícula de datos. (Nota: es posible que desee una cierta altura comprobación para asegurarse de que la forma y el gridview datos no son más altos que la pantalla del usuario)

+1

La primera parte de la respuesta hace que las columnas se ajusten al contenido de la cuadrícula de datos, pero * no * hace que la cuadrícula de datos se ajuste a su contenido (~ = las columnas). – Spook

1

Esto funciona suponiendo que todas las filas tienen la misma altura, incluso cuando la primera fila de cabecera tiene una altura diferente (por ejemplo, se envuelven las cabeceras largas)

If List.RowCount = 0 Then 
    List.Height = 0 
ElseIf List.RowCount = 1 Then 
    List.Height = List.ColumnHeadersHeight 
Else 
    List.Height = List.ColumnHeadersHeight + List.Rows(1).Height * (List.RowCount + 1) 
End If 
0

Establecer la datagridviewautosizecolumn a "All" Entonces, en el formulario que contiene el DataGridView, suponiendo que rellenar la vista de cuadrícula de datos en el controlador de eventos de carga o algún otro controlador de eventos como se desee siempre que se cargan los datos (debe ser, después de cargar datos) escribir: (VB)

Me.Width = DataGridView1.Width + 50 ' Number of pixels wider than the datagridview you want the form to be.

datagridview1 es el nombre de su control de datagridview. Me hace referencia al formulario que contiene el control datagridview.

Puede necesitar maximizar la ventana o anclarla en la parte superior e izquierda para garantizar su instalación, dependiendo de la cantidad de datos que se llenen.

Cuestiones relacionadas