Заставить DataGridView SingleVertical CellBorderStyle расширяться до конца?

Обратите внимание, прежде чем я начну... это то, как клиент хочет, чтобы он выглядел, поэтому, если у кого-то есть какой-либо "это ужасный пользовательский интерфейс / стиль / внешний вид / и т.д.", я могу согласиться или не согласиться, но это то, что они хотят. Мнения приветствуются, но это их просьба.:)

У меня есть DataGridView, к которому я применил SingleVertical CellBorderStyle. Я пытаюсь заставить вертикальные разделительные линии столбца идти до конца элемента управления, а не заканчиваться в последней ячейке. Есть ли способ сделать это без необходимости переопределять OnPaint или что-то подобное?

1 ответ

Поскольку у вас уже есть SingleVertical CellBorderStyle, вы можете заполнить оставшееся пространство одной большой пустой последней строкой:

//calculate the space already filled by column headers and rows
int currentContentHeight = Grid.ColumnHeadersHeight;
for (int i = 0; i < Grid.Rows.Count; i++)
{
    currentContentHeight += Grid.Rows[i].Height;
}
//then calculate the space remaining
int remainingHeightToEndOfControl = Grid.Height - currentContentHeight;
//then fill it with one big blank final row:
if (remainingHeightToEndOfControl > 0)
{
    Grid.Rows.Add();
    Grid.Rows[Grid.Rows.Count - 1].Height = remainingHeightToEndOfControl;
}

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

Другие вопросы по тегам