2012-03-21 18 views
5

Tengo un DataGridView que utilizo en un proyecto de C# Winforms. La grilla NO autogenera columnas. He configurado manualmente los nombres y las propiedades de las columnas.DataGridView Alineación de celda no funcionará

Esto incluye DefaultCellStyle para las celdas. Quiero que todas las celdas que son del tipo DataGridViewCheckBoxColumn se alineen centradas. He configurado manualmente esta alineación para cada columna de este tipo en el diseñador. Estos cambios no aparecen cuando se carga la vista de tabla de datos.

Como mi siguiente enfoque, que utiliza el código de abajo en caso DataBindingComplete (que tampoco tuvo efecto)

foreach (DataGridViewColumn dgvc in this.dgv_Automations.Columns) 
{ 
    if(dgvc.CellType == typeof(DataGridViewCheckBoxCell)) 
     dgvc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 
} 

Cuando la depuración, el código anterior ya había establecido la alineación del centro. Sin embargo, todavía no aparece en la cuadrícula.

I PUEDO hacerlo funcionar si durante el evento DataBindingComplete que hacer algo como esto:

foreach (DataGridViewRow dgvr in this.dgv_Automations.Rows) 
{ 
    dgvr.Cells["isErrors"].Style.Alignment = DataGridViewContentAlignment.MiddleCenter; 
} 

Sin embargo, tengo muchas de estas columnas y realmente no tiene sentido hacerlo de esta manera . EDITAR: Lo he implementado de esta manera y con solo alrededor de 10 filas hay un retraso muy notable al establecer esta propiedad en cada celda.

Mi pregunta es: ¿cuál es la forma correcta de hacer esto? ¿Por qué el diseñador DefaultCellStyle no funciona?

+0

No marque sus títulos con "C#" y tal. Para eso son las etiquetas. –

+0

observado. No lo haré en el futuro. – ImGreg

Respuesta

7

Según MSDN la DefaultCellStyle de un DataGridViewColumn queda anulado por los estilos especificados a través de los DataGridView.RowsDefaultCellStyle, DataGridView.AlternatingRowsDefaultCellStyle, DataGridViewRow.DefaultCellStyle, y DataGridViewCell.Style propiedades.
Por lo tanto, es possibile que uno de estos estilos se establece en un valor incompatible con su alineación requerida (por ejemplo DataGridViewContentAlignment.NotSet o DataGridViewContentAlignment.TopLeft)

Cuestiones relacionadas