Выравнивание ячеек DataGridView не будет работать - PullRequest
5 голосов
/ 21 марта 2012

У меня есть DataGridView, который я использую в проекте C # Winforms. Сетка НЕ ​​генерирует столбцы автоматически. Я вручную установил имена и свойства столбцов.

Это включает в себя DefaultCellStyle для ячеек. Я хочу, чтобы все ячейки типа DataGridViewCheckBoxColumn были выровнены по центру. Я вручную установил это выравнивание для каждого столбца этого типа в конструкторе. Эти изменения не отображаются при загрузке таблицы данных.

В качестве следующего подхода я использовал приведенный ниже код в событии DataBindingComplete (которое также не имело никакого эффекта)

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

При отладке приведенному выше коду уже было установлено выравнивание по центру. Тем не менее, он все еще не отображается в сетке.

I CAN работает, если во время события DataBindingComplete я делаю что-то вроде этого:

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

Однако у меня есть много таких столбцов, и на самом деле не имеет смысла делать это таким образом. РЕДАКТИРОВАТЬ: Я реализовал это таким образом, и только около 10 строк есть очень заметное отставание от установки этого свойства в каждой ячейке.

Мой вопрос: как правильно это сделать? Почему дизайнер DefaultCellStyle не работает?

Ответы [ 2 ]

7 голосов
/ 22 марта 2012

Согласно MSDN DefaultCellStyle для DataGridViewColumn переопределяется стилями, указанными в свойствах DataGridView.RowsDefaultCellStyle, DataGridView.AlternatingRowsDefaultCellStyle, DataGridViewRow.DefaultCellStyle и DataGridViewCell.Style.
Поэтому возможно, что для одного из этих стилей установлено значение, несовместимое с требуемым выравниванием (например, DataGridViewContentAlignment.NotSet или DataGridViewContentAlignment.TopLeft)

0 голосов
/ 12 апреля 2012

Еще более полезная ссылка для DefaultCellStyling и того, как работает наследование.

http://msdn.microsoft.com/en-us/library/1yef90x0.aspx

Оказалось, что я установил DefaultRowStyle, который переопределял DefaultCellStyle. Убедитесь, что вы проверили все стили !!

...