我正在尝试找到一种方法来突出显示具有不同颜色的列表框项目的背景,并且遇到了这个四年前的封闭线程,它几乎在这里回答了这个问题:
我没有关注如何使用他的方法。因此,如果我创建了一个名为 listBox1 的对象和一个名为 strSomeString 的字符串变量,那么将 strSomeString 添加到具有红色背景的 listBox1 的确切代码是什么?
在此处使用 Shadow Wizard 的代码:
private void lbReports_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
bool selected = ((e.State & DrawItemState.Selected) == DrawItemState.Selected);
int index = e.Index;
if (index >= 0 && index < lbReports.Items.Count)
{
string text = lbReports.Items[index].ToString();
Graphics g = e.Graphics;
Color color = (selected) ? Color.FromKnownColor(KnownColor.Highlight) : (((index % 2) == 0) ? Color.White : Color.Gray);
g.FillRectangle(new SolidBrush(color), e.Bounds);
// Print text
g.DrawString(text, e.Font, (selected) ? reportsForegroundBrushSelected : reportsForegroundBrush,
lbReports.GetItemRectangle(index).Location);
}
e.DrawFocusRectangle();
}
-谢谢