我想這個代碼,但它不工作:我如何爲ListBox中特定項目中的特定文本添加顏色?
private void LoadKeys(Dictionary<string,List<string>> dictionary, string FileName)
{
string line = System.String.Empty;
using (StreamReader sr = new StreamReader(keywords))
{
while ((line = sr.ReadLine()) != null)
{
string[] tokens = line.Split(',');
dictionary.Add(tokens[0], tokens.Skip(1).ToList());
listBox1.Items.Add(new MyListBoxItem(Color.Green, "Url: " + tokens[0] + " --- " + "Localy KeyWord: " + tokens[1]));
}
}
}
現在類MyListBoxItem:
public class MyListBoxItem
{
public MyListBoxItem(Color c, string m)
{
ItemColor = c; Message = m;
}
public Color ItemColor
{
get;
set;
}
public string Message
{
get;
set;
}
}
而且listBox1_DrawItem事件:
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
MyListBoxItem item = listBox1.Items[e.Index] as MyListBoxItem;
// Get the current item and cast it to MyListBoxItem
if (item != null)
{
e.Graphics.DrawString(// Draw the appropriate text in the ListBox
item.Message, // The message linked to the item
listBox1.Font, // Take the font from the listbox
new SolidBrush(item.ItemColor), // Set the color
0, // X pixel coordinate
e.Index * listBox1.ItemHeight // Y pixel coordinate. Multiply the index by the ItemHeight defined in the listbox.
);
}
else
{
// The item isn't a MyListBoxItem, do something about it
}
}
在列表框與嘗試此之前,顏色和繪製項目我用這條線:
listBox1.Items.Add("Url: " + tokens[0] + " --- " + "Localy KeyWord: " + tokens[1]);
的結果,例如:網址:http://www.google.com --- Localy關鍵字:
:試圖顏色故在綠色這條線的顏色仍然是黑色,ListBox中的文字現在是當谷歌現在
GatherLinks.Form1 + MyListBoxItem奇怪。
我想要做的是在列表框中的第一行着色Url:在紅色---在藍色和localykeyword:在黃色 在第二行Url:in Green ---在紅色和價值例如谷歌在藍色。
我該怎麼辦?
切換到具有ViewMode = Details的ListView將允許您爲列表中的每個項目指定前景色和背景色。讓我知道如果這是可以接受的,我會在一個答案中改變這個評論。 – Steve