views:

2066

answers:

1

Hi and thanks for reading.

I need to programmatically change the border of individual cells in a WinForms DataGridView. When searching on the 'net, I found this link (http://bytes.com/groups/net-vb/501128-changing-datagridview-cell-borders-runtime) which is the same thing that I am trying to do; however, there isn't a code example there of the solution, which is

"So you can inherit from the DataGridViewCell class and overrides AdjustCellBorderStyle method to get a customized version of DataGridViewCell. Then you can use this customized DataGridViewCell in your DataGridView. Note: In your customized DataGridViewCell, you should expose a DataGridViewAdvancedBorderStyle public member so that DataGridView code can set this member border style information to the cell. Then in the AdjustCellBorderStyle implementation, you should check the this DataGridViewAdvancedBorderStyle public member and return corresponding DataGridViewAdvancedBorderStyle. Then DataGridView PaintCells can use it to paint your cell.".

I'm having a hard time understanding implementing this solution. Could someone please translate the above into working VB.Net code and provide an example of calling it to change an individual cell's borders?

Many Thanks!

+1  A: 

Here is a ready made example which does what you need, just hidden amongst the extra functionality of setting the background colour.

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

Look for the lines

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

That line draws a cells border, so to change an individual cells border change the Event args (CellBackColorEventArgs class) to include whatever properties you want to describe the border. Then in the DrawCellBackColor method draw the border based on these passed in properties (and whatever else you want to draw in the cell)

Tetraneutron
It took a little work, but I was able to get the code in the link to behave as I wanted. Thanks!
OneSource