Выравнивание заголовка заголовка DataGridView в Winforms

У меня есть имя столбца "Цена котировки" в элементе управления winforms DataGridView. Я могу правильно выровнять столбец без пробелов, таких как "Unit" howerver. Я не могу правильно выровнять заголовок столбца со столбцом "Имя", называемое "Цена котировки". Я попытался использовать TopRight, MiddleRight и bottomRight без успеха.

SelectedAdditionalCost.Columns["Quote Price"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; // Doesn't want to right align
SelectedAdditionalCost.Columns["Quote Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; // column contents No worries, right aligns.

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

Ответы

Ответ 1

Как я писал ниже, я понял что-то, что может быть проблемой - имя столбца DataGridView не может содержать пробел - вы ссылаетесь на коллекцию столбцов по заголовку, а не по имени столбца. Хотя, когда я пытаюсь запустить код, как у вас, в вашем примере, я ударил ошибку времени выполнения (исключение для ссылки).

В любом случае, это в стороне:

Код, который у вас работает, отлично подходит для меня, я реализовал следующее в одном из моих тестовых проектов datagridview (в конструкторе), а текст заголовка справа выравнивается:

dataGridView.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

Поскольку вы упомянули пробел в тексте заголовка, столбец 2 включил пробел в свой текст.

Одна вещь, о которой я уже говорил, - это то, что текст заголовка может выглядеть неправильно, если глиф сортировки останавливает его от полного выравнивания до поля ячейки.

Смотрите, если это имеет значение:

dataGridView.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;

Ответ 2

Вы можете выровнять все заголовки столбцов, как это, а не делать это один за другим.

//MiddleRight Alignment for DataGridView Column Headers
DataGridViewCellStyle colHeaderStyle = new DataGridViewCellStyle();
colHeaderStyle.Alignment= DataGridViewContentAlignment.MiddleRight;
..... some other styles (like color, font etc) .........
dataGridView_custom.ColumnHeadersDefaultCellStyle = colHeaderStyle;

Ссылка, взятая из ответа VB, проверена как ok.