2012-02-14 18 views
7

Tengo un DataGridView en mi aplicación C#. Utilizando el diseñador, configuré AlternatingRowsDefaultCellStyle, así como las propiedades DefaultCellStyle en el propio DGV. Ambos estilos tienen un valor de relleno de 0, 0, 5, 0. No configuré ningún estilo personalizado para ninguna de las columnas DGV del menú Edit Columns en el complemento Tareas DataGridView.Cambiar el relleno para todas las celdas en una sola columna DataGridView

Hay una columna en el DGV que es una columna de imagen en la que dibujo un pequeño gráfico para cada fila. Me gustaría eliminar el relleno de todas las celdas de esta columna, por lo que no se aplica relleno a la celda, lo que deja algunos espacios en blanco al final del gráfico.

Cada una de las siguientes cosas que he intentado no elimina el relleno de ninguna celda en la columna, pero tampoco lanza ninguna excepción.

// first attempt 
// taken from http://social.msdn.microsoft.com/Forums/eu/winforms/thread/a9227253-8bb4-429a-a700-8a3a255afe4d 
deviceGrid.Columns["GProduction"].DefaultCellStyle.Padding = new Padding(0); 

// second attempt 
DataGridViewCellStyle style = deviceGrid.Columns["Graph"].DefaultCellStyle; // also tried Clone() 
style.Padding = new Padding(0); 
deviceGrid.Columns["GProduction"].DefaultCellStyle = style; 

// third attempt 
DataGridViewColumn col = deviceGrid.Columns["Graph"]; 
DataGridViewImageCell icell = new DataGridViewImageCell(); 
icell.Style.Padding = new Padding(0); 
col.CellTemplate = icell; 

sospecho que tal vez el DefaultCellStyle el relleno de la DataGridView en sí es reemplazar el estilo de celda por defecto que estoy tratando de establecer para la columna, pero si ese es el caso, ¿qué tengo que hacer para evitar esto?

SOLUCIÓN:
Después de seguir el proporcionada por jmh_gr I encontrado el problema era que el DefaultCellStyle para el propio DataGridView se hereda anteriores en la célula, así que tuve para eliminar el relleno de las propiedades DGV, y aplicarlo a todas las columnas excepto la que no quería relleno.

+1

pasar algún tiempo de calidad con [Estilos de celda en el control de Windows Forms DataGridView] (http://msdn.microsoft.com/en-us/library/1yef90x0.aspx), que detalla la herencia de estilo. Es difícil saber exactamente qué es la pila de estilos sin ver todos los estilos de código y GUI. –

+0

@jmh_gr Gracias por señalarlo, ahora veo que hereda el estilo de DGV DefaultCellStyle LAST, por lo que es ahí donde configuro el relleno, está anulando el valor 0 que establecí en la columna o celda. Creo que la solución es aplicar el relleno de 5px a las celdas que necesitan el relleno y dejar 0 relleno en los estilos predeterminados. – drew010

+0

En lugar de poner [resuelto] en el título y editar la pregunta, publique su solución como una respuesta. En unos días puede volver y marcarlo como aceptado. –

Respuesta

2

Después de seguir el link provisto por jmh_gr encontré que el problema era que DefaultCellStyle para DataGridView se hereda ÚLTIMA en la celda.

La solución fue eliminar el relleno de las propiedades de DGV y aplicarlo a todas las columnas, excepto la que no quería relleno.

0

Aquí es cómo podemos agregar relleno en DataGridView cabecera de la célula

 dgv.Columns("col1").HeaderCell.Style.Padding = New Padding(0, 5, 0, 0) 
     dgv.Columns("col2").HeaderCell.Style.Padding = New Padding(0, 5, 0, 0) 

este código debe ser añadido en el constructor o OnLoad(...)

Cuestiones relacionadas