Программное изменение границ отдельных ячеек в WinForms DataGridView

Мне нужно программно изменить границу отдельных ячеек в WinForms DataGridView. При поиске в сети я нашел эту ссылку (http://bytes.com/groups/net-vb/501128-changing-datagridview-cell-borders-runtime), что я пытаюсь сделать то же самое; однако там нет примера кода решения, которое

"Таким образом, вы можете унаследовать от класса DataGridViewCell и переопределить метод AdjustCellBorderStyle, чтобы получить настроенную версию DataGridViewCell. Затем вы можете использовать этот настроенный DataGridViewCell в своем DataGridView. Примечание. В настроенном вами DataGridViewCell вы должны предоставить доступ к общедоступному элементу DataGridViewAdvancedBorderStyle, чтобы может установить этот стиль границы элемента для ячейки. Затем в реализации AdjustCellBorderStyle вы должны проверить этот открытый элемент DataGridViewAdvancedBorderStyle и вернуть соответствующий DataGridViewAdvancedBorderStyle. Затем DataGridView PaintCells может использовать его для рисования вашей ячейки. ".

Мне сложно понять, как реализовать это решение. Может ли кто-нибудь перевести приведенное выше в рабочий код VB.Net и предоставить пример вызова его для изменения границ отдельной ячейки?


person OneSource    schedule 15.06.2009    source источник


Ответы (1)


Вот готовый пример, который делает то, что вам нужно, просто скрытый среди дополнительных функций по настройке цвета фона.

http://www.codeproject.com/KB/grid/hulihui_CustomDataGridVie.aspx

Ищите линии

// must draw border for grid scrolling horizontally 
e.Graphics.DrawRectangle(gridPenColor, rect1);  

Эта линия рисует границу ячеек, поэтому, чтобы изменить границу отдельных ячеек, измените аргументы событий (класс CellBackColorEventArgs), чтобы включить любые свойства, которые вы хотите описать границу. Затем в методе DrawCellBackColor нарисуйте границу на основе переданных в свойствах (и всего, что вы хотите нарисовать в ячейке)

person Tetraneutron    schedule 15.06.2009
comment
Это потребовало небольшой работы, но мне удалось заставить код в ссылке вести себя так, как я хотел. Спасибо! - person OneSource; 24.06.2009