现在有一个listbox,需要给每一行的item绘制不同的颜色。
比如
我好菜
我好菜
我好菜
我好菜到这一步是可以用ListBox.DrawItem事件来实现的。但是选中一行以后,选中行的背景颜色会变成黑色。
所以如果选中黑色项的行,字体会被覆盖掉。所以这时要把黑色项字体变成白色
比如选中第三行 则变成我好菜
我好菜
我好菜 ----》这行脑补下背景是黑色的=  。 =,字体是白的
我好菜到这一步还是可以在ListBox.DrawItem事件内来实现。但是继续从白色项点选到第二行的黑色项后。drawitem这时只会处理第二行的绘制工作。
我好菜
我好菜 ----》这行脑补下背景是黑色的=  。 =,字体是白的
我好菜 ----》这一行背景变回白色的了,字完全看不到了啊!
我好菜那怎么使第三行复位成黑色呢。小弟新人菜逼一枚。也没有多少的积分。
第一次发帖,表达的很怪异。希望各位看官能看懂我的意思帮帮忙

解决方案 »

  1.   


    你好。非常谢谢你的回复。可能我的表达不是很好。
    我不知道怎么绘制。
    写了一个DrawItem事件以后发现绘制的行好像是根据事件参数的e.index来确定的。
    就像我从第二行点到第四行,DrawItem事件参数的e.index = 3,e.Graphics.drawString也只会对这一行生效。
    那我怎么复位第二行的底色和前景色呢。
      

  2.   


    谢谢你的回复。我想再描述一下,就是当我在自绘的Listbox里选中new selection后不能"refresh"我之前的selected item。所以当我选中新item时,old selected item依旧保持之前的效果。当我最小化而后最大化窗口后就会再次绘制出成功的效果。烦问这位朋友有没有什么法子,感谢。