C# 如何更改列表框中SelectedItem的前景色

C# 如何更改列表框中SelectedItem的前景色,c#,winforms,listbox,items,C#,Winforms,Listbox,Items,在我的项目中,我面临一个小问题:如何更改列表框中所选项目文本的前颜色。我可以选择列表框的所有项目,但我不知道如何更改所选项目文本的前颜色 此代码在我的项目中用于选择列表框项 for (int i = 0; i < lbProductsToBuy.Items.Count; i++) { lbProductsToBuy.SetSelected(i,true); } printreceiptToken1(); dataGridView67.Rows.Clear(); for(int

在我的项目中,我面临一个小问题:如何更改
列表框
中所选项目文本的前颜色。我可以选择
列表框的所有项目,但我不知道如何更改所选项目文本的前颜色

此代码在我的项目中用于选择列表框项

for (int i = 0; i < lbProductsToBuy.Items.Count; i++)
{
     lbProductsToBuy.SetSelected(i,true);
}
printreceiptToken1();
dataGridView67.Rows.Clear();
for(int i=0;i
谢谢。在这些图像中,您可以看到我的应用程序的UI。和。查看最后一张图像,我想更改此选定项目的前颜色。

您可以将
列表框的属性设置为
OwnerDrawFixed
,然后删除控件的事件并自己绘制项目:

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    var listBox = sender as ListBox;
    var backColor = this.BackColor;         /*Default BackColor*/
    var textColor = this.ForeColor;         /*Default ForeColor*/
    var txt = listBox.GetItemText(listBox.Items[e.Index]);
    if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
    {
        backColor = Color.RoyalBlue;        /*Seletion BackColor*/
        textColor = Color.Yellow;           /*Seletion ForeColor*/
    }
    using (var brush = new SolidBrush(backColor))
        e.Graphics.FillRectangle(brush, e.Bounds);
    TextRenderer.DrawText(e.Graphics, txt, listBox.Font, e.Bounds, textColor,
        TextFormatFlags.VerticalCenter | TextFormatFlags.Left);
}

请帮忙;请让我为您提供此问题的最佳解决方案谢谢1)可能您忘记将
ListBox的
DrawMode
属性添加到
OwnerDrawFixed
2)可能您忘记将
listBox1\u DrawItem
方法附加到
ListBox
DrawItem
事件中对不起,您不明白我想要的是什么正在查找所选项目的设置前景色。你不是吗?帖子用黄色的前景色显示选定的项目。我想当我点击按钮时,列表框前景色的所有现有项目都会改变,然后如果我在列表框中添加新项目,项目前景色是黑色的,而不是改变,这是你做这项工作的唯一方法,我很奇怪,解决方案的哪一部分对你来说是不可理解的。这篇文章显然回答了你的问题。您需要选择所有项目,因此所有项目的颜色都是黄色。然后,如果取消选择所有项目,则所有项目都将显示为黑色。使用
ListBox
时,使用所有者绘制列表框是唯一的选项。否则,应使用ListView或DataGridView。