C# WInForm ListBox 重写

风的路过 2012-04-01 03:06:40
我想把ListBox重写,当鼠标选中某项时,这一项高度会变高,鼠标移动到某一项时,这一项的背景色会变化。每一项要添加多个属性。小弟求高手解决。
...全文
406 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jointan 2012-04-02
  • 打赏
  • 举报
回复
不需要重写,控件,窗口的构造函数中加上这两句:
this.listBox1.DrawMode = DrawMode.OwnerDrawVariable;
this.listBox1.DrawItem += new DrawItemEventHandler(listBox1_DrawItem);
再写一个如下的方法
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
e.Graphics.DrawString(....);
}
在这个方法中用一些绘图技巧区别显示一下选中

对于追踪问题,可以处理MouseMove事件,保存一部分窗口级变量,然后在绘图过程中根据变量去判断该使用的颜色,并适度强制重绘.
startstartsvip 2012-04-02
  • 打赏
  • 举报
回复
这个方法好,简单,回头测试一下
风的路过 2012-04-01
  • 打赏
  • 举报
回复
我想做个类似酷狗音乐歌曲列表这样的ListBox。求高手。能指导小弟的回复的也行。
orochiheart 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
不需要重写吧 在那两个事件触发的方法中 加上背景色发生变化的代码就ok了
[/Quote]
+1 一般winform自带控件都能满足一般需求的 除非需求太过变态。。才可能用第三方控件 比如dev
重写控件是蛮痛苦的事 反正我是懒得重写
lfqsy 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
不需要重写吧 在那两个事件触发的方法中 加上背景色发生变化的代码就ok了
[/Quote]
这种方法可行
烟波钓 2012-04-01
  • 打赏
  • 举报
回复
不需要重写吧 在那两个事件触发的方法中 加上背景色发生变化的代码就ok了

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧