学院首页>网络编程>ASP.NET>带颜色的listbox控件

带颜色的listbox控件

作者: 来源: 添加时间:2006-5-21 19:56:19
 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

站内搜索