c# - Error with e.PaintCells() not painting cells when overriding DataGridViewRow.OnRowPrePaint -


i'm trying control painting of datagridviewrows in derived datagridview overriding onrowprepaint method. test approach trying paint cells contents , background using eventargs paint methods e.g. e.paintcells() or e.paintcellsbackground() , setting eventargs.handled = true prevent of other paint methods firing.

my code far is:

    protected override void onrowprepaint(datagridviewrowprepainteventargs e)     {         using (solidbrush brush = new solidbrush(color.blue))         {             e.graphics.fillrectangle(brush, e.rowbounds);         }                      e.paintcellsbackground(e.rowbounds, true);         e.paintcells(e.rowbounds, e.paintparts);          e.handled = true;     } 

i expecting colour row blue , e.paintcellsbackground() , e.paintcells() methods paint cells ontop of blue background presented blue rows nothing else painted. remarks on msdn article on paintcellsbackground reads

use paintcellsbackground method when draw datagridviewrow , cells' contents yourself. if manually paint entire row , cells' contents, set handledeventargs.handled property true. when handledeventargs.handled true, cellpainting , rowpostpaint events not occur.

which leads me believe should able i'm hoping?

thank feedback, cannot find article read can set e.handled = true in oncellpainting , onrowpostpaint , handle of painting in onrowprepaint didn't appreciate meant all of painting.

when call of paint methods in onrowprepaint, oncellpainting called , appears handle actual painting had disabled in code expecting e.paintcells() method painting.

example 1

class mydatagridview : datagridview {     protected override void onrowprepaint(datagridviewrowprepainteventargs e)     {         e.paintcells(e.rowbounds, e.paintparts);         e.paintheader(true);         e.handled = true;     }     protected override void oncellpainting(datagridviewcellpaintingeventargs e)     {         base.oncellpainting(e);     } } 

in example onrowprepaint paints cells , headers , oncellpainting fires painting , datagridview paints expected

example 2

class mydatagridview : datagridview {     protected override void onrowprepaint(datagridviewrowprepainteventargs e)     {         e.paintcells(e.rowbounds, e.paintparts);         e.paintheader(true);         e.handled = true;     }     protected override void oncellpainting(datagridviewcellpaintingeventargs e)     {         e.handled = true;     } } 

in example onrowprepaint attempts paint cells , headers when oncellpainting triggered handled set true , nothing gets painted, resulting in blank datagridview

example 3

class mydatagridview : datagridview {     protected override void onrowprepaint(datagridviewrowprepainteventargs e)     {         e.handled = true;     }     protected override void oncellpainting(datagridviewcellpaintingeventargs e)     {         base.oncellpainting(e);     } } 

in final example onrowprepaint handled without of paint methods being called , oncellpaint never fired paint of row contents, column headers painted nothing else.

the key understanding how onrowprepaint, oncellpainting , onrowpostpaint tie together.


Comments

Popular posts from this blog

magento2 - Magento 2 admin grid add filter to collection -

Android volley - avoid multiple requests of the same kind to the server? -

Combining PHP Registration and Login into one class with multiple functions in one PHP file -