关于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属性。
[其他解释]
不过只能把一整行给绘制了,达不到我要的效果!
[其他解释]
backcolor也是给一整行设置颜色吧!还有就是现在不考虑用Listview
有没有其他办法
[其他解释]
你要的不就是整行绘制?你要的是文字变色?
自绘制可以。
ListView每行可以设置前景色,文本颜色:ForeColor
ListBox自己绘制也没问题。很容易。
[其他解释]
是文字变色,我弄了一段时间了,不过小弟愚笨,还没成功!
能否给出关键代码,或者思路
谢谢
[其他解释]
帮顶了!
[其他解释]
应该帮顶解决问题。。。。
[其他解释]
先谢谢了
[其他解释]
不知这是否可行
ListItem li=new ListItem();
li.Text=<span color:"red">redfont</span><span>bluefont</span>
不知是否可作参考,随便写的
[其他解释]
不行吧,vb.net没这吧
[其他解释]
c#呢?