DataGridView неправильно отображает заголовки столбцов во время разработки

1

Я наблюдал некоторое нечетное поведение при работе с DataGridView внутри GroupBox. Я понимаю, что DataGridView использует свойства Ambient, которые наследуют стили, как описано здесь, однако я считаю, что при отображении во время разработки есть ошибка. Ниже перечислены шаги по воссозданию в Visual Studio 2013 (я также сделал это в VS2008 с теми же результатами):

Создайте новую форму. Создайте GroupBox и установите размер шрифта на 22. Создайте DataGridView внутри поля Group и добавьте три столбца (все настройки по умолчанию).

Заголовки столбцов DataGridView наследуют настройки шрифта GroupBox, как ожидалось:

Изображение 174551

Измените DataGridView1.EnableHeadersVisualStyles на свойство False и отредактируйте DataGridView1.ColumnHeadersDefaultCellStyle. Установите Font как Mistral, 9.75pt. Теперь форма должна выглядеть так, как показано на рисунке, и при запуске приложения:

Изображение 174551

Теперь начинается веселье. Сохраните и закройте вкладку Form1 и заново откройте ее, дважды щелкнув форму в обозревателе решений. Теперь в представлении дизайна заголовок столбца изменился и, по-видимому, наследует настройку шрифта родительского GroupBox:

Изображение 174551

Однако, когда приложение запускается, заголовки используют правильные настройки шрифта:

Изображение 174551

Это ошибка с рендерингом проектного представления или я неправильно понимаю правила наследования?

Теги:
visual-studio
winforms
datagridview

1 ответ

1
Лучший ответ

Конечно, это похоже на ошибку с дизайнером. Я вижу тот же эффект в VS2013, хотя файл Designer.cs сохраняет следующую строку:

dataGridViewCellStyle1.Font = new System.Drawing.Font("Mistral", 9.75F,
    System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

Я не уверен, почему контроль внутри GroupBox ведет себя таким образом, но есть обходной путь.

Поместите Panel внутри GroupBox, затем поместите элементы управления, такие как DataGridView в Panel.

Затем вы можете установить свойство Font на Panel и унаследовать его DataGridView, или вы можете просто изменить стиль заголовка в сетке, и он будет отображаться правильно после закрытия/повторного открытия Form.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню