带颜色的listbox控件

Private Sub filllistboxwithcolors() 


       Me.ListBox1.DrawMode = DrawMode.OwnerDrawFixed 



       Me.ListBox1.ItemHeight = 24 



       '避免闪烁 



       Me.ListBox1.BeginUpdate() 



       ListBox1.Items.Clear() 



       Dim pi As Reflection.PropertyInfo 



       For Each pi In GetType(Color).GetProperties(Reflection.BindingFlags.Public Or Reflection.BindingFlags.Static) 



         Me.ListBox1.Items.Add(pi.Name) 



       Next 



       ListBox1.EndUpdate() 







End Sub 







Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem 



       Dim rect As Rectangle = e.Bounds '每一项的边框 



       If e.State And DrawItemState.Selected Then 



         e.Graphics.FillRectangle(SystemBrushes.Window, rect) 







       End If 



       Dim colorname As String = ListBox1.Items(e.Index) 



       Dim b As New SolidBrush(Color.FromName(colorname)) 



       rect.Inflate(-16, -2) 



       e.Graphics.FillRectangle(b, rect) 



       e.Graphics.DrawRectangle(Pens.Black, rect) 



       Dim b2 As Brush 



       If CInt(b.Color.R) + CInt(b.Color.G) + CInt(b.Color.B) > 128 * 3 Then 



         b2 = Brushes.Black 



       Else 



         b2 = Brushes.White 







       End If 



       e.Graphics.DrawString(colorname, Me.ListBox1.Font, b2, rect.X, rect.Y) 



End Sub
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值