Well, now I can see your problem. I'm not sure this will be easy but I think if you have to override th OnPaint event you can put an if statement at the begining to check for the CurrentCell or RowIndex properties to make sure that you are in the header row, but I don't know how that be of any help. Another way I can think of doing this is by putting a + or - in the header cell's text;P, I know it's silly but I can't think of anything else right now!! I even tried to use the ascii code to put the triangle (Codded 1E for up & 1F for down) in the text but it doesn't work! while I was digging up I also found "dataGrid1.TableStyles[0].GridColumnStyles[x]" property!! maybe it will be of some assistance. You may also get the ClientRectangle, or the Displayrectangle of the DataGrid. Then add the widthes of the columns before the selected column to 0 and this will be the location of your column. Then use the System.Drawing to draw your rectangle in the header's area. But what's worth all this effort?!! -- modified at 17:46 Tuesday 16th May, 2006