after searching bit, haven't come across specific question.
i change default behavior of listview selection on winform in c#
i need because using custom colors in cells represent meta-information necessecary user.
(i using single row selection only, i.e. mutiselect = false;
)
when select row in listview whole row highlighed blue default,
instead know,
how can outline border of row , not change color(s) of cells in row?
as seen in following
yes, listview supports custom drawing setting ownerdraw property true. tends elaborate needs simple, can use lot of default drawing here. when item selected need different. controlpaint class can draw dotted rectangle want. implement 3 draw event handlers, this:
private void listview1_drawcolumnheader(object sender, drawlistviewcolumnheadereventargs e) { e.drawdefault = true; } private void listview1_drawitem(object sender, drawlistviewitemeventargs e) { e.drawbackground(); e.drawtext(); if ((e.state & listviewitemstates.selected) == listviewitemstates.selected) { var bounds = e.bounds; bounds.inflate(-1, -1); controlpaint.drawfocusrectangle(e.graphics, bounds); } } private void listview1_drawsubitem(object sender, drawlistviewsubitemeventargs e) { e.drawbackground(); e.drawtext(); if ((e.itemstate & listviewitemstates.selected) == listviewitemstates.selected) { var bounds = e.bounds; bounds.inflate(-1, -1); controlpaint.drawfocusrectangle(e.graphics, bounds); } }
tweak desired. note want implement mousedown event user can click sub-item , select row. isn't clear anymore behaves listview. use hittest() method implement that.
Comments
Post a Comment