假設的WinForms,這是我會做什麼:
開始通過製造類包含的項目添加到列表框中。
public class MyListBoxItem {
public MyListBoxItem(Color c, string m) {
ItemColor = c;
Message = m;
}
public Color ItemColor { get; set; }
public string Message { get; set; }
}
使用此代碼項目添加到您的列表框:
listBox1.Items.Add(new MyListBoxItem(Colors.Green, "Validated data successfully"));
listBox1.Items.Add(new MyListBoxItem(Colors.Red, "Failed to validate data"));
在列表框的屬性,設置DrawMode到OwnerDrawFixed,創造DrawItem事件的事件處理程序。這使您可以根據需要繪製每個項目。
在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
}
}
有一些限制 - 最主要的是你需要編寫自己的點擊處理和重繪適當的項目,以使它們顯得選擇,自Windows拿下在OwnerDraw模式下不會這樣做。但是,如果這只是爲了記錄應用程序中發生的事情,您可能不關心可選擇的項目。
要滾動到最後一項嘗試
listBox1.TopIndex = listBox1.Items.Count - 1;
你忘了其實*提問*。 – jv42
1.通過你的問題和acceptanswers,看起來你是正確的或有用的。 2)指定問題和技術(WinForms,WPF ...) – Tigran
你忘了提及WinForms/WPF/WebForms/... –