关于listbox每行字体颜色的有关问题?高手指教
关于listbox每行字体颜色的问题?高手指教
如果只是让不同行颜色不同,可以做到。但
我想让listbox同一行的字显示不同颜色,比如:I love you! 我想要的结果是要这样的:I 为黑色,love显示为红色 you显示为蓝色。用OnDrawItem能实现吗?
请指教!
------最佳解决方案--------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.ListBox1.DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
Me.ListBox1.Items.Add("楼主变态")
Me.ListBox1.Invalidate()
End Sub
Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
Dim Dstring As String = Me.ListBox1.Items(e.Index).ToString
Dim Col As Color
Dim A, R, G, B As Byte
Dim left As Int16 = e.Bounds.Location.X
Dim Guid As New Guid
Dim Ran As Double = New System.Random(System.Environment.TickCount).NextDouble
For Each C As Char In Dstring
'该段产生随机数的代码不好!要上班了,VS2010和VS2008有的差异?
A = 255 * New System.Random(Ran).NextDouble
Ran = New System.Random(Ran).NextDouble
R = 255 * New System.Random(Ran).NextDouble
Ran = New System.Random(Ran).NextDouble
G = 255 * New System.Random(Ran).NextDouble
Ran = New System.Random(Ran).NextDouble
B = 255 * New System.Random(Ran).NextDouble
Col = Color.FromArgb(A, R, G, B)
Dim Pen As New Drawing.SolidBrush(Col)
e.Graphics.DrawString(C, e.Font, Pen, left, e.Bounds.Top)
left = left + e.Graphics.MeasureString(C, e.Font, e.Bounds.Width).Width
Next
End Sub
------其他解决方案--------------------
能。自己绘制。
------其他解决方案--------------------
直接用ListView就可以了。
每行都有有BackColor属性。
------其他解决方案--------------------
如果只是让不同行颜色不同,可以做到。但
我想让listbox同一行的字显示不同颜色,比如:I love you! 我想要的结果是要这样的:I 为黑色,love显示为红色 you显示为蓝色。用OnDrawItem能实现吗?
请指教!
------最佳解决方案--------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.ListBox1.DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
Me.ListBox1.Items.Add("楼主变态")
Me.ListBox1.Invalidate()
End Sub
Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
Dim Dstring As String = Me.ListBox1.Items(e.Index).ToString
Dim Col As Color
Dim A, R, G, B As Byte
Dim left As Int16 = e.Bounds.Location.X
Dim Guid As New Guid
Dim Ran As Double = New System.Random(System.Environment.TickCount).NextDouble
For Each C As Char In Dstring
'该段产生随机数的代码不好!要上班了,VS2010和VS2008有的差异?
A = 255 * New System.Random(Ran).NextDouble
Ran = New System.Random(Ran).NextDouble
R = 255 * New System.Random(Ran).NextDouble
Ran = New System.Random(Ran).NextDouble
G = 255 * New System.Random(Ran).NextDouble
Ran = New System.Random(Ran).NextDouble
B = 255 * New System.Random(Ran).NextDouble
Col = Color.FromArgb(A, R, G, B)
Dim Pen As New Drawing.SolidBrush(Col)
e.Graphics.DrawString(C, e.Font, Pen, left, e.Bounds.Top)
left = left + e.Graphics.MeasureString(C, e.Font, e.Bounds.Width).Width
Next
End Sub
------其他解决方案--------------------
能。自己绘制。
------其他解决方案--------------------
直接用ListView就可以了。
每行都有有BackColor属性。
------其他解决方案--------------------