如何更改下拉組合列表框中某些項目的顏色?我有一個程序從文件中加載列表中的項目,並且我希望某些項目由開關(來自文件中其他字段的數據)確定爲不同的顏色。該列表將被排序。Visual Basic 2010 - 更改列表框中的文本顏色
例如 - 一個20人的列表被加載,其中3人的東西會改變他們的名字爲不同的顏色。這怎麼可以在代碼中完成?
ForeColor屬性不起作用...它更改列表中的所有項目。
如何更改下拉組合列表框中某些項目的顏色?我有一個程序從文件中加載列表中的項目,並且我希望某些項目由開關(來自文件中其他字段的數據)確定爲不同的顏色。該列表將被排序。Visual Basic 2010 - 更改列表框中的文本顏色
例如 - 一個20人的列表被加載,其中3人的東西會改變他們的名字爲不同的顏色。這怎麼可以在代碼中完成?
ForeColor屬性不起作用...它更改列表中的所有項目。
您可以所有者繪製的項目,然後指定商品的顏色,例如:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ComboBox1.DrawMode = DrawMode.OwnerDrawFixed
Dim i As New Item()
i.ItemColor = Color.Red
i.Text = "Hello"
ComboBox1.Items.Add(i)
i = New Item()
i.ItemColor = Color.Blue
i.Text = "World"
ComboBox1.Items.Add(i)
End Sub
Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ComboBox1.DrawItem
If e.Index < 0 Then Return
Dim i As Item
i = TryCast(ComboBox1.Items(e.Index), Item)
If i IsNot Nothing Then
e.Graphics.DrawString(i.Text, e.Font, New SolidBrush(i.ItemColor), e.Bounds)
End If
End Sub
End Class
Public Class Item
Public Text As String
Public ItemColor As Color
End Class
嗨...謝謝你的答案,我相信它會起作用。我需要幾天的時間才能適應我的計劃。我是一位自學成才的程序員愛好者。但是,從我所看到的...這是否意味着我需要將相同的過程應用於列表中的其他項目,我不需要使用不同的顏色?或者我可以正常添加這些項目嗎?看起來「DrawItem」子程序是由「items.add」函數調用的,因此需要將正常的項目應用到「item」類中,但是使用黑色(或前景色)作爲類。 –
只要控件繪製項目,就會調用DrawItems。當您通過單擊下拉按鈕或使用鍵盤刪除列表時會發生這種情況。您可以簡單地爲所有不需要格式化的項目使用組合框的前景色。根據您的項目佈局,您可以找出正確設置此值的位置。 –
什麼是'下拉組合列表box'? – OneFineDay
你想要一個「所有者繪製」的控件。對於ListBox,請參閱[ListBox.DrawMode](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listbox.drawmode(v = vs.110).aspx)。對於ComboBox,請參見[ComboBox.DrawMode](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.combobox.drawmode(v = vs.110).aspx)。 –
http://stackoverflow.com/questions/15936006/change-color-of-specific-item-on-listbox-that-contains-a-specific-string-on-draw – Dano