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。