Программно изменять границы отдельных ячеек в WinForms DataGridView
-
13-09-2019 - |
Вопрос
Мне нужно программно изменить границы отдельных ячеек в WinForms DataGridView.При поиске в сети я нашел эту ссылку (http://bytes.com/groups/net-vb/501128-changing-datagridview-cell-borders-runtime) это то же самое, что я пытаюсь сделать;однако там нет примера кода решения, которое является
"Таким образом, вы можете наследовать от класса DataGridViewCell и переопределяет метод AdjustCellBorderStyle, чтобы получить настроенную версию DataGridViewCell.Затем вы можете использовать эту настроенную ячейку DataGridViewCell в вашем DataGridView.Примечание:В вашей настроенной DataGridViewCell вам следует предоставить открытый элемент DataGridViewAdvancedBorderStyle, чтобы код DataGridView мог установить информацию о стиле границы этого элемента для ячейки.Затем в реализации AdjustCellBorderStyle вам следует проверить открытый элемент this DataGridViewAdvancedBorderStyle и вернуть соответствующий DataGridViewAdvancedBorderStyle.Затем DataGridView PaintCells может использовать его для рисования вашей ячейки.".
Мне трудно понять, как реализовать это решение.Не мог бы кто-нибудь, пожалуйста, перевести вышесказанное в рабочий код VB.Net и привести пример его вызова для изменения границ отдельной ячейки?
Решение
Вот готовый пример, который делает то, что вам нужно, просто скрытый среди дополнительных функций настройки цвета фона.
http://www.codeproject.com/KB/grid/hulihui_CustomDataGridVie.aspx
Посмотрите на линии
// must draw border for grid scrolling horizontally
e.Graphics.DrawRectangle(gridPenColor, rect1);
Эта линия рисует границу ячеек, поэтому, чтобы изменить границу отдельных ячеек, измените аргументы события (класс CellBackColorEventArgs), чтобы включить любые свойства, которые вы хотите описать границу.Затем в методе DrawCellBackColor нарисуйте границу на основе этих переданных в свойствах (и всего остального, что вы хотите нарисовать в ячейке)