今天在CSDN的论坛看到一个问题,大致是这么个意思:
当鼠标滑过ComboBox的列表项时,怎么才能获取当前鼠标滑过列表项?
在网上找了找,没现成的,但是看到有人在VC里边用OnDrawItem来实现,就用了这个思路。
首先将将DrawMode属性设置为OwnerDrawFixed
然后绑定DrawItem事件,具体方法如下:
private void moveComboBox1_DrawItem(object sender, DrawItemEventArgs e) { //经测试,鼠标划过时,e.State 为 DrawItemState.Selected if (e.State == DrawItemState.Selected) { e.Graphics.FillRectangle(new SolidBrush(Color.Beige), new RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)); //显示鼠标滑过项目的文本 label1.Text = moveComboBox1.Items[e.Index].ToString(); } else if (e.State == DrawItemState.None) { e.Graphics.FillRectangle(new SolidBrush(Color.White), new RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)); } e.Graphics.DrawString(moveComboBox1.Items[e.Index].ToString(), moveComboBox1.Font, new SolidBrush(Color.Black), 2, e.Bounds.Y + 2); }
代码比较容易懂,先画背景,然后画文字。
由此,上边的问题就可以解决了。
我们还可以在这里做其它的一些个性化操作,发挥想象吧。
比如修改选中的背景颜色等等,这里我们使用了Color.Beige作为背景颜色。
此篇文章做个记录。
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论